2012-05-21 76 views
1

我在Ruby(v1.9.2)中有一個以UTF-8編碼的字符串。將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

只有使用該文件的Ruby解釋器或其他Ruby庫可以在讀取文件時識別編碼是什麼(這是代碼本身)。 OSX 10.6。 – iain

回答

1

通常Ruby會將env變量作爲初始值,如果該變量設置爲utf-8,ruby應該默認讀取文件爲utf-8。

+0

感謝您的回答,非常感謝。 – iain