まつもと ゆきひろです

In message "Re: [ruby-dev:37499] Re: when to use default_internal"
    on Fri, 19 Dec 2008 09:01:45 +0900, "Yugui (Yuki Sonoda)" <yugui / yugui.jp> writes:

|On 12/19/08 12:20 AM, Yukihiro Matsumoto wrote:
|> 上記の通り、internal_encodingに "-" を指定します。nilの指定
|> を許した方がわかりやすいでしょうか。
|
|ドキュメントに書いてあれば、それなりに納得のいく動作だと思います。
|今新しいハッシュ形式のmode指定はrdocに書かれていないので、これはあとで書
|いておきます。

Yuguiさんが勘違いをして、私もすぐにはわからなかったというこ
とは今後間違える人がたくさん出そうですから「nilは無変換」と
いうパッチを書いてコミットしておきました。

その他、

  * external_encoding, internal_encodingとencodingが同時に指
    定された場合には、external_encodingなどの方が優先

  * external_encodingにnilを指定するとdefault_externalの意味。
    internal_encodingにnilを指定すると無変換の意味。

  * external_encodingとinternal_encodingに同じものを指定した
    場合には、無変換の意味(警告なし)

ということを徹底しました。

これを書きながら思ったのですが、IO#internal_encodingは現在無
変換の場合nilを返してますが、これは入力の結果得られる文字列の
エンコーディングをいつも返した方が使い勝手が良いかもしれませ
ん。こちらのパッチは1行なのですが、テストがかなり失敗するよう
になるため、導入前に議論しておきたいと思います。現状であまり
困らないということならば、無理に変えることはありませんし。

                                まつもと ゆきひろ /:|)