Issue #12650 has been updated by shyouhei (Shyouhei Urabe).


We looked at this issue in today's developer meeting.

First off, attendees' understanding: ENV in Windows is managed by its kernel, and is provided to an userland process as an array of wide characters.  Tell me if it's wrong.  Also, we already support writing UTF_8 strings into ENV because that has no backwards compatibility problem.  The problem is to read from it.

Now, from our long tradition of using OEM codepage in Windows, it has been difficult to change the encoding of ENV to UTF_8.  A tragedy is Windows does have chcp 65001, wich is not practically used anywhere.  So windows users are left in their code pages.

I understand you want to use UTF_8.  In order to do so, changing default encoding is not practically possible now because of backwards compatibility.  I advice you to propose other ways; like for instance having some sort of "UTF_8 mode"-like thing.  Maybe does it make sense for you to set default_internal encoding (which is set to nil by default)?

----------------------------------------
Feature #12650: Use UTF-8 encoding for ENV on Windows
https://bugs.ruby-lang.org/issues/12650#change-63564

* Author: davispuh (Dvis Mosns)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
Windows environment variables supports Unicode (same wide WinAPI) and so there's no reason to limit ourselves to any codepage.
Currently ENV would use locale's encoding (console's codepage) which obviously won't work correctly for characters outside of those codepages.

I've attached a patch which implements this and fixes bug #9715


---Files--------------------------------
0001-Always-use-UTF-8-encoded-environment-on-Windows.patch (3.64 KB)


-- 
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>