私はすべてのUTF-8関連の質問とブログ投稿を読んでおり、test.rbファイルに次の例を持っています。
# encoding: UTF-8
File.open("test.txt", "w") do |f|
f.write "test © foo"
end
File.open("test.txt", "r") do |f|
puts f.read
end
これは完全に機能します。は、ファイルに©記号を正しく生成し、©を読み返して画面に印刷します。
しかし、実際のプロジェクトでこの同じコードを使用すると、©記号の代わりにファイルに書き込まれます:\u00A9
FWIW:自分のコードに対してrspec(v1.2.9)テストを実行すると、この結果が得られます。仕様では、©記号を含むファイルを作成し、ファイルを読み込んで内容を確認します。
私はこれをRuby 1.9.2で実行していますが、Ruby 1.8.6。 RubyInstaller.orgバージョンのRubyを使用したWindows環境。
コードを実行すると、特殊文字に関するエラーが発生します。このコードを試していただけますか?
# encoding: UTF-8
File.open("test.txt", "w:UTF-8") do |f|
f.write "test \u00A9 foo"
end
#Encoding.filesystem = "UTF-8"
p Encoding.find("filesystem")
File.open("test.txt", "r:UTF-8") do |f|
puts f.read
end
私の窓箱で私はそれから得る
#<Encoding:Windows-1252>
test © foo
Âがある理由がわかりません。
少ないコードでファイルを読む:
# encoding: UTF-8
file_content = File.open("test.txt", "r:UTF-8", &:read)
アプリケーションはどのOSで実行されますか?ファイルのデフォルトのエンコードがASCIIである可能性があります。 w:utf-8
とr:utf-8
を開いているパラメーターに追加すると役立ちますか?