将UTF-8编码的字符串写入文件

时间:2012-05-21 15:15:20

标签: ruby character-encoding

我在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?

注意:我确实有一个特定的错误,我正在尝试修复,但是这个问题已经出现了,我希望得到一般答案。

1 个答案:

答案 0 :(得分:1)

Ruby通常将$LANG env变量作为启动器,如果将其设置为utf-8,则默认情况下ruby应将文件读取为utf-8。