[ruby-dev:49545] [Ruby trunk Bug#11900] broken encoding of commandline on Windows

From: naruse@...
Date: 2016-03-30 09:23:45 UTC
List: ruby-dev #49545
Issue #11900 has been updated by Yui NARUSE.


Usaku NAKAMURA wrote:
> しかしこれだと-Uでも同等の効果が得られるわけですが、それが正しいのかどうか……。
> -Uでは効かなくするにはこの修正箇所のちょっと上にあるif節の中でencをinternal encodingで上書きしている部分でencに代入しないようにする必要があります(一時変数として利用されてるだけなのでこの処理自体は本来は独立の気がする)。

-U は -e で与えたソースのエンコーディングにも影響するはずなので、通常SJISな-eソースも、-Uが与えられていればUTF-8になるはずですね。
なお、現在のパッチだと-Ksを指定した場合には壊れたままになる気がするので、そこも直す必要があります。


----------------------------------------
Bug #11900: broken encoding of commandline on Windows
https://bugs.ruby-lang.org/issues/11900#change-57859

* Author: Usaku NAKAMURA
* Status: Assigned
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* ruby -v: ruby 2.4.0dev (2015-12-27 trunk 53345) [x64-mswin64_100]
* Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED, 2.3: REQUIRED
----------------------------------------
今頃気付いてしまったのですが、2.2以降のWindowsで、コマンドラインのエンコーディングが壊れています。
思い返すと、ちょうど1年前くらいになかださんがこの辺をいじっていたので、その時からではないかと。
trunkはもうめんどくさいからEncodingをUTF-8にしちゃっていい気がしますが、2.2と2.3はどうしたものすかね。

~~~
C:\>c:\ruby\2.1.8\bin\ruby -ve "s = 'てすと'; p [s, s.encoding, s.b]"
ruby 2.1.8p440 (2015-12-16 revision 53160) [x64-mswin64_100]
["てすと", #<Encoding:Windows-31J>, "\x82\xC4\x82\xB7\x82\xC6"]

C:\>c:\ruby\2.2.4\bin\ruby -ve "s = 'てすと'; p [s, s.encoding, s.b]"
ruby 2.2.4p230 (2015-12-16 revision 53155) [x64-mswin64_100]
["縺ヲ縺吶→", #<Encoding:Windows-31J>, "\xE3\x81\xA6\xE3\x81\x99\xE3\x81\xA8"]

C:\>c:\ruby\2.3.0\bin\ruby -ve "s = 'てすと'; p [s, s.encoding, s.b]"
ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mswin64_100]
["縺ヲ縺吶→", #<Encoding:Windows-31J>, "\xE3\x81\xA6\xE3\x81\x99\xE3\x81\xA8"]

C:\>ruby -ve "s = 'てすと'; p [s, s.encoding, s.b]"
ruby 2.4.0dev (2015-12-27 trunk 53345) [x64-mswin64_100]
["縺ヲ縺吶→", #<Encoding:Windows-31J>, "\xE3\x81\xA6\xE3\x81\x99\xE3\x81\xA8"]

~~~




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

In This Thread

Prev Next