1

Apatana Studio 3.0 を使用しています。などの非 ASCII 文字 üは、de.yml およびその他のファイルで使用できます。追加のエンコーディング値が必要ですか? 私は # encoding: utf-8特定のコントローラーに存在し、index.html.erb を除くすべてのページでうまく機能します。index.html.erb でエラーが発生します。

Encoding::CompatibilityError in Home#index
    incompatible character encodings: Windows-1252 and UTF-8 

の翻訳文字列de.ymlは次のとおりです。

de:
    display_eula: EULA für Applikation

注: 上記の文字列は他のページでは正しく表示されますが、index.html.erb.

4

2 に答える 2

2

ソーススクリプトの文字エンコードと、ディスクや他のソースから読み取られたファイルで実行されるI/Oには違いがあります。

# encoding: utf-8ソースファイル自体に通常のASCII範囲外のUTF-8エンコード文字が含まれていることをRubyに伝えるような魔法の行。これにより、Rubyはソースファイル内の固定文字列とマルチバイト文字を正しく解釈できます。

I / Oストリームの場合、Rubyに着信/発信データの解釈方法を指示する必要があります。IO.newおよびそれに関連するメソッドは、着信/発信データストリームエンコーディングが何であるかを示すオプションのパラメータを取ります。

YAML、JSON、HTML、XML、およびディスク、ソケット、またはパイプから読み取られるその他のファイルタイプは、純粋なASCIIでない場合、エンコードの問題の影響を受けやすくなります。Rubyには、オンザフライで変換したり、文字列がメモリに格納された後で変換したりするための非常に優れたツールスイートがあります。Rubyに何を期待するかを伝えない場合、または期待するものに変換しない場合、あなたが見たように、Rubyは文句を言います。

James Grayには、RubyでのUnicodeおよびマルチバイト文字セットの処理について説明している一連の記事があります。それは簡単なトピックではないので、それはいくつかの深海に入りますが、彼は物事を説明する素晴らしい仕事をします。

于 2012-11-27T15:26:11.013 に答える
2

問題は、AWS-SimpleDB からのデータにありました (これを に変更する必要がありましたstring.encode("utf-8")。それにもかかわらず、ご尽力いただきありがとうございます。

于 2012-11-28T14:48:26.967 に答える