チケット #1951 が更新されました。 (by Yui NARUSE)

Target version 1.9.2にセット

記述が正確でないという指摘を受けたので訂正します。

現状の機能は、
「BOMに従ってencodingを設定するが、BOMがない場合のデフォルト値を指定できる」
というものですが、現状の指定方法である「UTF-*-BOM」から見て直観的ではありません。
ゆえに、「BOM|UTF-*」と変更する案です。

念のため、「BOM|UTF-*」の動作をおさらいしますと、
冒頭にU+FEFFがあった場合、これをBOMとみなし、それに基づきencodingを設定します。
この場合は冒頭のU+FEFFはBOMなのですから、これを読み込んだStringには含めません。
冒頭にU+FEFFがなかった場合、後半のUTF-*をencodingとして設定します。

一方で、「UTF-*-BOM」に対しては、encodingがUTF-*でかつ、冒頭のU+FEFFはBOMであるという指定です。
この場合も、冒頭のU+FEFFはBOMなのですから、これを読み込んだStringには含めません。
読み込んだBOMや文字列が指定のencodingと矛盾した場合は例外が上がります。
冒頭にU+FEFFがなかった場合は、普通のUTF-*と動作が変わりません。

ちなみに、普通の「UTF-*」だった場合は、冒頭にU+FEFFがあった場合、これをZWNBSPとみなし保持します。
なかった場合は無論何も起きません。
----------------------------------------
http://redmine.ruby-lang.org/issues/show/1951

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