我在Ruby(v1.9.2)中有一个用UTF-8编码的字符串。我通过字符串和每个字符来检查:
enc = __ENCODING__
=> #<Encoding:UTF-8>
s.encoding
# => #<Encoding:UTF-8>
s.each_char{|c| return false unless c.encoding == enc }
# this passes
我接受字符串并将其写入文件:
File.open("/path/to/file.rb", "w:UTF-8") do |f|
f.write s
end
# => 39939
File.open("/path/to/file.rb", "rb").read.encoding
# => #<Encoding:ASCII-8BIT>
File.open("/path/to/file.rb", "r").read.encoding
# => #<Encoding:UTF-8>
该文件也由我正在使用的文本编辑器(TextWrangler)设置为使用UTF-8,并且它也设置了魔术注释。 如何确保读取此文件的任何ruby程序(不一定在我的控制下)认为编码是UTF-8?
注意:我确实有一个特定的错误,我正在尝试修复,但是这个问题已经出现了,我希望得到一般答案。
答案 0 :(得分:1)
Ruby通常将$LANG
env变量作为启动器,如果将其设置为utf-8,则默认情况下ruby应将文件读取为utf-8。