[#42945] [Ruby 1.8-Bug#4231][Open] configure.bat --with-winsock2 が socket/extconf.rbに効いていない — Masahiro Kitajima <redmine@...>

Bug #4231: configure.bat --with-winsock2 が socket/extconf.rbに効いていない

8 messages 2011/01/05

[#43027] [Ruby 1.9-Feature#4280][Assigned] SJIS should be an alias of Windows-31J, not of Shift_JIS — Usaku NAKAMURA <redmine@...>

Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS

13 messages 2011/01/14
[#43030] [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS — Motohiro KOSAKI <redmine@...> 2011/01/14

チケット #4280 が更新されました。 (by Motohiro KOSAKI)

[#43031] Re: [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS — "U.Nakamura" <usa@...> 2011/01/14

こんにちは、なかむら(う)です。

[#43033] Re: [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS — KOSAKI Motohiro <kosaki.motohiro@...> 2011/01/14

2011年1月14日16:35 U.Nakamura <usa@garbagecollect.jp>:

[#43039] ext/openssl development repository — Hiroshi Nakamura <nakahiro@...>

W3J1YnktY29yZTozNDQxNl3jga7ml6XmnKzlkJHjgZHniYjjgafjgZnjgIIKCuacgOi/kU1hcnRp

21 messages 2011/01/14
[#43040] Re: ext/openssl development repository — "U.Nakamura" <usa@...> 2011/01/14

こんにちは、なかむら(う)です。

[#43041] Re: ext/openssl development repository — Yusuke ENDOH <mame@...> 2011/01/14

遠藤です。

[#43053] Re: ext/openssl development repository — Hiroshi Nakamura <nakahiro@...> 2011/01/17

MjAxMS8xLzE0IFl1c3VrZSBFTkRPSCA8bWFtZUB0c2cubmUuanA+Ogo+Pj4gwqAgwqAgwqAgwqAg

[#43092] pthread_cond を用いたConditionVariable — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

15 messages 2011/01/24

[ruby-dev:43036] [Ruby 1.9-Bug#4281][Open] irb don't start up when Encoding.defalut_internal isn't 'utf-8'

From: Narihiro Nakamura <redmine@...>
Date: 2011-01-14 09:02:07 UTC
List: ruby-dev #43036
Bug #4281: irb don't start up when Encoding.defalut_internal isn't 'utf-8'
http://redmine.ruby-lang.org/issues/show/4281

起票者: Narihiro Nakamura
ステータス: Open, 優先度: Normal
カテゴリ: ext, Target version: 1.9.2
ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]

nariです。

以下のようにすると irb が起動しません。
 $ ruby -S -E cp932:cp932 irb
 /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:135:in `eval': /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: invalid multibyte char (UTF-8) (SyntaxError)
 /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: invalid multibyte char (UTF-8)
 /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: syntax error, unexpected $end, expecting keyword_end
   def_exception :UnrecognizedSwitch, 'スイッチ(%s)が分りません'
                                          ^
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:135:in `real_load'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:125:in `block in load'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:123:in `each'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:123:in `load'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/init.rb:122:in `init_error'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/init.rb:17:in `setup'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb.rb:53:in `start'
         from /home/nari/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `<main>'

再現コードは以下です。
 $ cat /tmp/t.rb
 require "irb"
 Encoding.default_internal = "cp932"
 Encoding.default_external = "cp932"
 # pathはRubyのインストール先に合わせて変えてください
 path = "/home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb"
 src = IRB::MagicFile.open(path){|f| f.read}
 p src
 eval(src)

 $ ruby /tmp/t.rb
 #<Encoding:Windows-31J>
 /tmp/t.rb:8:in `eval': (eval):16: invalid multibyte char (UTF-8) (SyntaxError)
 (eval):16: invalid multibyte char (UTF-8)
 (eval):16: syntax error, unexpected $end, expecting keyword_end
   def_exception :UnrecognizedSwitch, 'スイッチ(%s)が分りません'
                                          ^
         from /tmp/t.rb:8:in `<main>'

cp932に変換された文字列(src)の中に、utf-8を指定するマジックコメントが入っ
ており、utf-8の文字列としてeval()されるのが原因のようです。

Encoding.default_internalが指定されるようなケースまで標準ライブラリが対
応する必要はないのかもしれませんが、情報共有の意味も込めて報告しておき
ます。

この問題については以下のパッチで直ることを確認しています。

diff --git a/lib/irb/magic-file.rb b/lib/irb/magic-file.rb
index 8612620..339ed60 100644
--- a/lib/irb/magic-file.rb
+++ b/lib/irb/magic-file.rb
@@ -8,9 +8,10 @@ module IRB
       line = io.gets
       line = io.gets if line[0,2] == "#!"
       encoding = detect_encoding(line)
+      internal_encoding = encoding
       encoding ||= default_src_encoding
       io.rewind
-      io.set_encoding(encoding, nil)
+      io.set_encoding(encoding, internal_encoding)

       if block_given?
         begin


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next