我有一个在 MySQL 5.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 |
+------+-----------------+---------+
这是我遇到的问题
在登台(在 debian 盒子上运行 db 和 Rails 站点)时,从 Rails 显示时,符号的字符会正确显示。例如,人民币在我的浏览器中显示为元,而不是数据库中显示的 å...ƒ。
当我将该数据下载到本地 OS X 开发机器并在本地运行 db 和 Rails 时,我会在浏览器上看到来自 DB (å...ƒ) 内部的表示,而不是我在登台时看到的字符 元。
调试我已经完成
我已确保 Content-Type 的所有标头都以 utf8 形式从每个网络服务器(本地、暂存)返回。
我的本地 mysql 服务器和登台服务器都设置为使用 utf8 作为默认字符集。在我拨打任何电话之前,我正在使用“set names 'utf8'”。
我什至可以从我的 OS X Rails 主机连接到我的暂存数据库,我仍然可以看到代表人民币的字符 å...ƒ。那我猜,也许我的mysql本地客户端有问题,但我不知道是什么问题。
也许这可能会提供线索
更令人困惑的是,如果我将字符元粘贴到本地计算机上的数据库中,我会在网络浏览器中看到它很好。--- 然而,如果我将相同的字符粘贴到我的暂存数据库中,我会得到一个 ? 在我的暂存 Rails 站点的页面上标记它的位置。
此外,如果我在查询之前使用“set names 'latin1'”,那么在我的 OS X rails 机器上本地,所有字符都会正确返回。我之前确实将这些表设置为 latin1 - 这可能是问题吗?
有人请在这里帮助我,我要疯了,试图找出问题所在!