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でエンコードされているようです。しかし、データベース/テーブルのエンコーディング/文字セットはまったく同じですか?!