[ruby-core:96156] [Ruby master Bug#15044] ENV encoding not UTF-8 by default

From: naruse@...
Date: 2019-12-09 10:21:55 UTC
List: ruby-core #96156
Issue #15044 has been updated by naruse (Yui NARUSE).


The assigned value to `ENV` are stored in the process's environment variable.

The encoding of `ENV[key]` is set as locale.
You can get the locale encoding by `Encoding.find("locale")` which is decided based on `Encoding.locale_charmap` which is affected by `ENV["LANG"]` and `ENV["LC_ALL"]`.

Note that `ENV["PATH"]` is returned as filesystem encoding but it is the same as locale encoding on Unix.

----------------------------------------
Bug #15044: ENV encoding not UTF-8 by default
https://bugs.ruby-lang.org/issues/15044#change-83030

* Author: lowang (Przemyslaw Wroblewski)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
~~~
$ irb
2.5.1 :001 > 'secret'.encoding
 => #<Encoding:UTF-8>
2.5.1 :002 > ENV['PASS'] = 'secret'; ENV['PASS'].encoding
 => #<Encoding:US-ASCII>
2.5.1 :009 > ENV['PASS'] = 'Ł'
 => "\u0141"
2.5.1 :010 > ENV['PASS'].encoding
 => #<Encoding:ASCII-8BIT>
~~~
I would expect all encodings to be **UTF-8** at all times





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next