我在 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?
注意:我确实有一个我正在尝试修复的特定错误,但是这个问题出现得足够多,我想得到一个一般性的答案。