2010-12-18 9 views
1

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のエンコーディングで返されます。

しかし、私はまた、モデルの数でシリアル化されたハッシュの利用を作り、私は(アップグレード前に完全に働いた)、その内容を読み取るために電話をかける時はいつでも、私は、次の不可解な行動を得る:

  1. 内容にUnicodeデータが含まれている場合、ASCIIとして返され、エスケープ文字として表示されます。
  2. 内容にASCIIデータが含まれている場合は、UTF-8(正しく)として返され、正しく表示されます。

ASCIIコードで返されたUnicode文字列をUTF-8に再エンコードするだけで、すべて正常に動作します。しかし、それは間違いなくハックであり、良いアプローチとして私を攻撃しない。

シリアル化されたUTF-8フィールドを正しく表示する方法はありますか?もしこれがどこかのバグであれば、どこにいて、既に知られているのか?

答えて

0

これはそれに対応していますか? Why are all strings ASCII-8BIT after I upgraded to Rails 3?

+0

私はすでにファイルの上にそれを持っていますが、私の問題はシリアル化されたモデルフィールドにのみ影響しています。ソースファイル(ファイルの先頭にある魔法のコメント)と普通のモデルのテキストと文字列フィールドのUnicodeを含め、他のすべてがうまく動作します。 –

関連する問題