From: Kazuhiro NISHIYAMA Date: 2008-01-09T21:39:00+09:00 Subject: [ruby-dev:32996] binmode and ASCII-8BIT 西山和広です。 http://dontstopmusic.no-ip.org/diary/20080106.html#p02 を見てちょっと調べてみたのですが、 * binmode で external_encoding が ASCII-8BIT になる * external_encoding が ASCII-8BIT だと ASCII-8BIT 以外のエンコーディングの ascii_only ではない文字列が出力できない * nil と ASCII-8BIT が同じ扱いのメソッドと違う扱いのメソッドがある というのは仕様でしょうか? 改行の変換だけ止めてほしい場合は .binmode.set_encoding(nil) に なるのでしょうか? % ruby-trunk -v ruby 1.9.0 (2008-01-09 revision 0) [i686-linux] % ruby-trunk -e 'Encoding.find(nil)' -e:1:in `find': can't convert nil into String (TypeError) from -e:1:in `
' % ruby-trunk -e 'p "".encode(nil).encoding' # % ruby-trunk -e 'p "".encode(Encoding::ASCII_8BIT).encoding' # % ruby-trunk -e 'p STDERR.set_encoding(Encoding::ASCII_8BIT).external_encoding' # % ruby-trunk -e 'p STDERR.set_encoding(nil).external_encoding' nil % ruby-trunk -e 'p STDERR.binmode.external_encoding' # % % ruby-trunk -E euc-jp -e 'p "\xFF".encoding' # % ruby-trunk -E euc-jp -e 'p "\xFF".force_encoding(Encoding::ASCII_8BIT).encoding' # % ruby-trunk -E euc-jp -e 'p "\xFF".force_encoding(nil).encoding' # % -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)