Ruby 3.0.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > IOクラス > set_encoding_by_bom

instance method IO#set_encoding_by_bom

set_encoding_by_bom -> Encoding | nil[permalink][rdoc]

BOM から IO のエンコーディングを設定します。

自身が BOM から始まる場合、BOM を読み進めて外部エンコーディングをセットし、セットしたエンコーディングを返します。 BOM が見つからなかった場合は nil を返します。

自身がバイナリモードでないかすでにエンコーディングがセットされている場合、例外が発生します。



File.write("bom.txt", "\u{FEFF}abc")
File.open("bom.txt", "rb") do |io|
  p io.set_encoding_by_bom    #=>  #<Encoding:UTF-8>
  str = io.read
  p str                       #=>  "abc"
  p str.encoding              #=>  #<Encoding:UTF-8>
end

File.write("nobom.txt", "abc")
File.open("nobom.txt", "rb") do |io|
  p io.set_encoding_by_bom    #=>  nil
end