From: dogatana@... Date: 2016-10-14T13:06:46+00:00 Subject: [ruby-dev:49838] [Ruby trunk Bug#12841] Kernel#exec(cmdname, arg1, ...) passes arg1 that is encoded strangely on Japanese Windows Issue #12841 has been reported by Toshihiko Ichida. ---------------------------------------- Bug #12841: Kernel#exec(cmdname, arg1, ...) passes arg1 that is encoded strangely on Japanese Windows https://bugs.ruby-lang.org/issues/12841 * Author: Toshihiko Ichida * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [i386-mingw32] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Kernel#exec(cmdname, arg1, ...) 形式でプログラムを呼び出す際、argが日本語を含んでいると 化けた文字列が渡されます。 同じ内容を Kernel#excec(cmdline) 形式で呼び出すと問題は発生しません。 直接呼び出す場合は問題なし ~~~ > ruby test.rb あ arg: あ, enc: Windows-31J, bytes: 82-a0 ~~~ cmdline だと問題なし ~~~ > irb irb(main):001:0> Kernel.exec 'ruby test.rb あ' arg: あ, enc: Windows-31J, bytes: 82-a0 ~~~ cmdname, arg1 だとarg1が文字化けしている。 ~~~ > irb irb(main):001:0> Kernel.exec 'ruby', 'test.rb', 'あ' arg: 縺・, enc: Windows-31J, bytes: e3-81-81-45 ~~~ bunlder が Kernel#excec(cmdname, arg1, ...)形式を利用しているため、 ~~~ bundle exec mygemprogram 引数 ~~~ として作成中にgemを実行する場合、漢字を含む引数が正しく受け取れ なくなっています。 ---Files-------------------------------- test.rb (111 Bytes) -- https://bugs.ruby-lang.org/