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>

このファイルは、UTF-8を使用するために使用しているテキストエディタ(TextWrangler)によっても設定されており、マジックコメントも設定されています。このファイルを読み取るルビープログラム(必ずしも私の制御下にあるとは限りません)がエンコーディングがUTF-8であると見なすようにするにはどうすればよいですか?

注:修正しようとしている特定のエラーがありますが、この問題が発生するので、一般的な回答が必要です。

4

1 に答える 1

1

通常、Rubyは$LANGenv変数をスターターとして受け取ります。これがutf-8に設定されている場合、rubyはデフォルトでファイルをutf-8として読み取る必要があります。

于 2012-05-21T15:52:44.897 に答える