当前位置:  开发笔记 > 后端 > 正文

Rails上的UTF8 MySQL问题 - 使用utf8_general_ci编码问题

如何解决《Rails上的UTF8MySQL问题-使用utf8_general_ci编码问题》经验,为你挑选了2个好方法。

我有一个在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作为默认字符集.在我打电话之前,我正在使用"设置名称'utf8'".

我甚至可以从我的OS X Rails主机连接到我的登台数据库,我仍然看到代表人民币的字符å...ƒ.我猜,那可能是我的mysql本地客户端有问题,但我无法弄清楚问题是什么.

也许这可能会提供一些线索

为了让它更令人困惑,如果我将字符元素粘贴到我本地计算机上的数据库中,我会在网络浏览器中看到它.---如果我将同一个字符粘贴到我的登台数据库中,我会得到一个?在我的登台Rails网站上标记它在页面上的位置.

另外,如果我在查询之前使用"设置名称'latin1'",我的OS X rails机器本地,这些字符都会正常返回.我之前确实将这些表设置为latin1 - 这可能是问题吗?

有人请帮帮我,我疯了,试图弄清楚什么是错的!



1> Subimage..:

AHA!似乎我之前有一些以latin1编码的表信息,并且愚蠢地将数据库更改为utf8而不进行转换.

运行以下修复了currency_types表:

mysqldump -u root -p --opt --default-character-set=latin1 --skip-set-charset  DBNAME > DBNAME.sql

mysql -u root -p --default-character-set=utf8  DBNAME < DBNAME.sql

现在我只需要确保在latin1> utf8开关之后生成的其他内容没有搞砸了:(



2> Can Berk Güd..:

database.yml在正确的部分下面有这两行吗?

encoding: utf8
collation: utf8_general_ci

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有