1

こんにちは、いくつかのデータを格納する oracle データベースがあります。「TEST」など、英語以外のテキストも含まれています。引用は英語の引用 "ではありません。問題は、Rails 2.2.2 (Ruby 1.8.7) から取得すると、このデータベース モデルのフィールド値が erg ビューで疑問符を返すため、"TEST" が ?TEST? になることです。ただし、Rails 3 では正しく表示されます。

値を表示するerbのコードは

User.first.description

次のようにdatabase.ymlでエンコーディングを設定しますが、役に立ちません

エンコーディング: UTF8 照合: utf8_unicode_ci

それは、Ruby 1.9 が Ruby 1.8 よりもエンコーディングを適切に処理できるためでしょうか。この問題を解決する方法はありますか?

4

1 に答える 1

0

はい、Ruby 1.9 は 1.8 とは異なるエンコーディングを処理します。また、Rails 3 では、すべてが UTF-8 であることを確認することで、エンコードが容易になります。

おそらく問題は、文字列が でエンコードされており、Rails 2 がそれをエンコーディングLatin-1として読み取ろうとすることです。UTF-8データベースで試すことができるモンキー パッチがオンラインでいくつかあります。または、1 回限りのスクリプトを実行して、データベース内のすべてのフィールドを再エンコードすることもできます。

Ruby でエンコーディングがどのように機能するかをさらに理解するために、これを読むことをお勧めします: Encodings, Unabridged (by Yehuda Katz)

于 2012-10-03T15:12:34.370 に答える