0

Ruby1.8.7からRuby1.9.2に移行したばかりですが、文字列エンコーディングの問題に悩まされ続けています。私のMySQLデータベースはすべてutf8ですが、それからクエリを実行して文字列エンコーディングを検索するたびに、ASCII-9BITが取得されます。

ruby-1.9.2-p180 :002 > Artist.find(1043).name.encoding
 => #<Encoding:ASCII-8BIT> 

したがって、SigurRósのようなアーティストは「SigurR \ xC3\xB3s」として印刷します。私のクライアントアプリはUTF8jsonがサーバーから返されることを期待しているため、これがいくつかの問題を引き起こしていることがわかりました(常にそうであるように)。一時的な回避策は私のコード全体に追加されているようforce_encoding("UTF-8")ですが、特にRuby 1.8.7はこれらのいずれも必要としなかったため、非常に厄介な感じがします。

エンコーディングマジックコメントEncoding.default_externalをenvファイルに、encodingパラメーターをdatabase.ymlファイルに追加しようとしましたが、何もしません。

Ruby 1.9.xと文字列エンコーディングをどのように処理する必要がありますか?

-

編集:他のRailsアプリ(最初からRuby 1.9.2)では、すべてのMySQL文字列がUTF-8でエンコードされているようです。しかし、データベース/テーブルのエンコーディング/文字セットはまったく同じですか?!

4

1 に答える 1

0

さて、Rails3.1.3とmysql20.3.10にアップデートすると、私の問題は解決したようです(Rails3.0.3とmysql20.2.6を実行していました)。しかし、Ruby 1.9は3年以上前のものであり、その後Rails 3.0.3がリリースされたため、Rails3.0.xがRubyの1.9の新しい文字列エンコーディングでうまく機能しない理由がわかりません。誰かがこれを合計することができれば私は感謝するでしょう。

于 2012-07-07T19:12:59.850 に答える