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>
このファイルは、UTF-8を使用するために使用しているテキストエディタ(TextWrangler)によっても設定されており、マジックコメントも設定されています。このファイルを読み取るルビープログラム(必ずしも私の制御下にあるとは限りません)がエンコーディングがUTF-8であると見なすようにするにはどうすればよいですか?
注:修正しようとしている特定のエラーがありますが、この問題が発生するので、一般的な回答が必要です。