1

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

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

4

1 回答 1

1

通常 Ruby 将$LANGenv 变量作为启动器,如果该变量设置为 utf-8,则 ruby​​ 默认应以 utf-8 读取文件。

于 2012-05-21T15:52:44.897 回答