From: Yukihiro Matsumoto Date: 2008-01-10T02:26:30+09:00 Subject: [ruby-dev:32998] Re: binmode and ASCII-8BIT まつもと ゆきひろです In message "Re: [ruby-dev:32996] binmode and ASCII-8BIT" on Wed, 9 Jan 2008 21:39:00 +0900, Kazuhiro NISHIYAMA writes: |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 で external_encoding が ASCII-8BIT になる 仕様、でした。Martinさんから指摘を受けて、encodingには手を加 えないようにすることにしました。が、まだ実装に反映されてませ ん。 * external_encoding が ASCII-8BIT だと ASCII-8BIT 以外のエンコーディングの ascii_only ではない文字列が出力できない 明示的に指定した場合には変換が行われますから、出力の場合には エンコーディングを指定しないことをお薦めします。ただし、この エントリの場合にはbinmodeが勝手に指定しているわけですが。これ はバグ認定です。 * nil と ASCII-8BIT が同じ扱いのメソッドと違う扱いのメソッドがある StringおよびEncodingではnilはエンコーディングとして指定でき ません。IOにおいては「エンコーディングを指定しない」という意 味になります。それ以外で「違う扱い」があれば教えてください。 |改行の変換だけ止めてほしい場合は .binmode.set_encoding(nil) に |なるのでしょうか? binmodeだけでOKになる予定です。 まつもと ゆきひろ /:|)