MySQL5.0.32-Debianで実行されているステージングRailsサイトがあります。
この特定のサイトでは、すべてのテーブルがutf8 / utf8_general_ci
エンコーディングを使用しています。
そのデータベースの中に、次のようなデータがあります。
mysql> select * from currency_types limit 1,10;
+------+-----------------+---------+
| code | name | symbol |
+------+-----------------+---------+
| CAD | Canadian Dollar | $ |
| CNY | Chinese Yuan | å…ƒ |
| EUR | Euro | € |
| GBP | Pound | £ |
| INR | Indian Rupees | ₨ |
| JPY | Yen | ¥ |
| MXN | Mexican Peso | $ |
| USD | US Dollar | $ |
| PHP | Philippine Peso | ₱ |
| DKK | Denmark Kroner | kr |
+------+-----------------+---------+
これが私が抱えている問題です
ステージング時(dbおよびRailsサイトがdebianボックスで実行されている場合)、Railsから表示されたときにシンボルの文字が正しく表示されます。たとえば、中国人民元は、データベース内に表示されているように、私のブラウザでは元として表示されていますが、å…ƒではありません。
そのデータをローカルのOSX開発マシンにダウンロードし、dbとRailsをローカルで実行すると、ステージングで表示される文字元ではなく、ブラウザーのDB(å…ƒ)内からの表現が表示されます。
私が行ったデバッグ
Content-Typeのすべてのヘッダーが各Webサーバー(ローカル、ステージング)からutf8として返されることを確認しました。
私のローカルmysqlサーバーとステージングサーバーは両方とも、デフォルトの文字セットとしてutf8を使用するように設定されています。電話をかける前に「setnames'utf8'」を使用しています。
OS X Railsホストからステージングデータベースに接続することもできますが、人民元を表す文字å…ƒが表示されます。おそらく、mysqlローカルクライアントに問題があると思いますが、問題が何であるかを理解できません。
おそらくこれは手がかりを与えるかもしれません
さらに混乱させるために、ローカルマシンのデータベースに元という文字を貼り付けると、Webブラウザで問題なく表示されます。---それでも、同じ文字をステージングデータベースに貼り付けると、?ステージングRailsサイトのページのその場所にマークを付けます。
また、OS X Railsマシンでローカルに、クエリの前に「set names'latin1'」を使用すると、すべての文字が正しく返されます。以前、これらのテーブルをlatin1として設定していましたが、これが問題になる可能性がありますか?
誰かがここで私を助けてください、私は何が悪いのかを理解しようと夢中になっています!