Project

General

Profile

Actions

Bug #7200

closed

Setting external encoding with BOM|

Added by brixen (Brian Shirai) over 11 years ago. Updated about 11 years ago.

Status:
Rejected
Target version:
ruby -v:
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0]
Backport:
[ruby-core:48130]

Description

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"
=> #File:foo.txt
1.9.3p286 :002 > f.internal_encoding
=> #Encoding:EUC-JP
1.9.3p286 :003 > f.external_encoding
=> #Encoding:UTF-16BE
1.9.3p286 :004 > f.close
=> nil
1.9.3p286 :005 > f = File.open "foo.txt", "r"
=> #File:foo.txt
1.9.3p286 :006 > f.set_encoding "bom|utf-16be:euc-jp"
=> #File:foo.txt
1.9.3p286 :007 > f.internal_encoding
=> #Encoding:EUC-JP
1.9.3p286 :008 > f.external_encoding
=> #Encoding:UTF-16BE
1.9.3p286 :009 > f.close
=> nil
1.9.3p286 :010 > f = File.open "foo.txt", "r"
=> #File:foo.txt
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"
=> #File:foo.txt

Thanks,
Brian

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0