% ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
次のスクリプトを実行すると
# coding: utf-8
Encoding.default_external = 'cp932'
Encoding.default_internal = 'utf-8'
File.open('cp932.txt', 'r').read
こんなエラーになる
% ruby /tmp/a.rb
/tmp/a.rb:4:in `read': code converter not found (Windows-31J to UTF-8) (Encoding::ConverterNotFoundError)
from /tmp/a.rb:4:in `<main>'
-E オプションを指定すればエラーにならない
% ruby -Ecp932:utf-8 /tmp/a.rb
外部エンコーディング、内部エンコーディング指定してもエラーになる
# coding: utf-8
Encoding.default_external = 'cp932'
Encoding.default_internal = 'utf-8'
File.open('cp932.txt', 'r:cp932:utf-8').read
でも default_external か default_internal のどちらかを消せばエラーにならない
# coding: utf-8
Encoding.default_external = 'cp932'
#Encoding.default_internal = 'utf-8'
File.open('cp932.txt', 'r:cp932:utf-8').read