From: thomas@... Date: 2017-03-13T16:33:25+00:00 Subject: [ruby-core:80143] [Ruby trunk Feature#12650] Use UTF-8 encoding for ENV on Windows Issue #12650 has been updated by thomthom (Thomas Thomassen). I would be ok with it not being default, as long as it can be configured for the whole interpreter and not some magic comment that would have to be in each source file. In our particular scenario we are embedding Ruby into our application and we would like to configure the Ruby interpreter to use this "UTF-8 mode". People that are writing Ruby extensions for our application already have to use hacks such as force_encoding to correct this - and it's a constant source of bugs and problems. If we could force ENV strings to be UTF-8 by default for the embedded environment we provide that be a great relief for us. shyouhei (Shyouhei Urabe) wrote: > 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-63571 * Author: davispuh (D��vis Mos��ns) * 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: