From: "naruse (Yui NARUSE)" Date: 2012-11-07T17:05:17+09:00 Subject: [ruby-core:49024] [ruby-trunk - Bug #7200][Rejected] Setting external encoding with BOM| Issue #7200 has been updated by naruse (Yui NARUSE). Status changed from Assigned to Rejected BOM| specifier is available only on mode_enc. :encoding of open and set_encoding(mode_enc) handles mode_enc, but :external_encoding of open and set_encoding(ext, int) handles encodings. ---------------------------------------- Bug #7200: Setting external encoding with BOM| https://bugs.ruby-lang.org/issues/7200#change-32546 Author: brixen (Brian Ford) Status: Rejected Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] File.open will accept, for example, :encoding => "bom|utf-16be:euc-jp" or :encoding => "bom|utf-16be". However, :external_encoding => "bom|utf-16be" raises an ArgumentError. Likewise, IO#set_encoding will accept "bom|utf-16be:euc-jp" but raises an ArgumentError if passed "bom|utf-16be", "euc-jp". It is inconsistent to accept "bom|utf-*" in some cases and not others. See the following IRB transcript. $ irb 1.9.3p286 :001 > f = File.open "foo.txt", "r", :encoding => "bom|utf-16be:euc-jp" => # 1.9.3p286 :002 > f.internal_encoding => # 1.9.3p286 :003 > f.external_encoding => # 1.9.3p286 :004 > f.close => nil 1.9.3p286 :005 > f = File.open "foo.txt", "r" => # 1.9.3p286 :006 > f.set_encoding "bom|utf-16be:euc-jp" => # 1.9.3p286 :007 > f.internal_encoding => # 1.9.3p286 :008 > f.external_encoding => # 1.9.3p286 :009 > f.close => nil 1.9.3p286 :010 > f = File.open "foo.txt", "r" => # 1.9.3p286 :011 > f.set_encoding "bom|utf-16be", "euc-jp" ArgumentError: unknown encoding name - bom|utf-16be from (irb):11:in `set_encoding' from (irb):11 from /Users/brian/.rvm/rubies/ruby-1.9.3-p286/bin/irb:16:in `
' 1.9.3p286 :012 > f = File.open "foo.txt", "w", :external_encoding => "bom|utf-16be" ArgumentError: unknown encoding name - bom|utf-16be from (irb):12:in `initialize' from (irb):12:in `open' from (irb):12 from /Users/brian/.rvm/rubies/ruby-1.9.3-p286/bin/irb:16:in `
' 1.9.3p286 :013 > f = File.open "foo.txt", "rb", :encoding => "bom|utf-16be" => # Thanks, Brian -- http://bugs.ruby-lang.org/