instance method IO#set_encoding_by_bom

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

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