Rails 2.3/Ruby 1.8からRails 3/Ruby 1.9にアップグレードした後、本当に奇妙な現象に陥っています。タイトルで触れたように、私はPostgresを使っていて、pg gem 0.10.0と一緒に使っています。Rails 3とRuby 1.9にアップグレードされ、PostgresデータベースのUnicodeデータがASCIIとして返される(潜在的なバグ?)
モデルの文字列またはUnicodeを含むテキストフィールドを呼び出すと、正しく動作し、UTF-8のエンコーディングで返されます。
しかし、私はまた、モデルの数でシリアル化されたハッシュの利用を作り、私は(アップグレード前に完全に働いた)、その内容を読み取るために電話をかける時はいつでも、私は、次の不可解な行動を得る:
- 内容にUnicodeデータが含まれている場合、ASCIIとして返され、エスケープ文字として表示されます。
- 内容にASCIIデータが含まれている場合は、UTF-8(正しく)として返され、正しく表示されます。
ASCIIコードで返されたUnicode文字列をUTF-8に再エンコードするだけで、すべて正常に動作します。しかし、それは間違いなくハックであり、良いアプローチとして私を攻撃しない。
シリアル化されたUTF-8フィールドを正しく表示する方法はありますか?もしこれがどこかのバグであれば、どこにいて、既に知られているのか?
私はすでにファイルの上にそれを持っていますが、私の問題はシリアル化されたモデルフィールドにのみ影響しています。ソースファイル(ファイルの先頭にある魔法のコメント)と普通のモデルのテキストと文字列フィールドのUnicodeを含め、他のすべてがうまく動作します。 –