3

わかった。そのため、トラフィックの多い Web サイトを支えている大規模なレガシー データベースがあります。テーブルは latin1 でエンコードされており、UTF-8 に変換中です。サイトをRails化し、DBに直接アクセスできるようになりました。ただし、データベースに挿入された utf8 文字で非常に奇妙なことが起こっているようです。Tolk (https://github.com/dhh/tolk) を使用してサイトを中国語に変換していますが、残念ながら、翻訳テーブルを UTF-8 に変換する前にサイトがセットアップされました。問題は、ユニコード文字の latin1 テーブルに奇妙な文字形式が挿入されていることです。

次に例を示します。

--- "xfire\xE7\x94\xA8\xE6\x88\xB7\xEF\xBC\x9F\xE8\xAF\xB7\xE7\x82\xB9\xE5\x87\xBB<a dialog-name='account_actions' href='#login' class='dialog_link login add_overlay'>Sign in</a>\xE7\xBC\x96\xE8\xBE\x91\xE4\xBD\xA0\xE7\x9A\x84\xE8\xB4\xA6\xE6\x88\xB7\xE4\xBF\xA1\xE6\x81\xAF"

データは YAML としてシリアル化され、Rails またはデータベースは、Unicode の漢字をこのバックスラッシュで区切られた 16 進形式に変換するために何らかの処理を行っているようです。

何が起こっているのでしょうか?これらの 16 進文字列を対応する utf-8 文字に変換する方法はありますか?

4

1 に答える 1

1

問題は YAML にあったことが判明しました ( Rails: encoding woes with serialized hashにもかかわらず UTF8 を参照)。

これを environment.rb に追加すると、問題が完全に解決されました。

YAML::ENGINE.yamler= 'syck' if defined?(YAML::ENGINE)
于 2012-06-14T22:46:19.877 に答える