我的数据库表中有一列具有utf8_general_ci排序规则。

database.yml的编码为:utf8

config / application.rb具有:config.encoding =“ utf-8”

当我使用mysql命令行直接查询字段时,它显示:
3√5^ 2 = 5 ^(2/3); 5 ^(2/3)=3√5^ 2

当我使用Rails控制台(或仅在视图中显示)并输出显示的字段时:
3×5 ^ 2 = 5 ^(2/3); 5 ^(2/3)= 3×5 ^ 2

如您所见,sqrt标记被弄乱了。

我究竟做错了什么?

最佳答案

经过长时间的研究,我找到了解决方案。似乎所讨论的列是双重编码的。它们以前具有Latin1归类,但未正确转换为UTF8。

提议的解决方案将列更改为BLOB,然后使用UTF8返回至TEXT无效:

ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;


最终起作用的是:

mysqldump -uuser -ppassword --opt --quote-names --skip-set-charset --default-character-set=latin1 dbname1 table1 > dump.sql
mysql -uuser -ppassword --default-character-set=utf8 dbname1 < dump.sql

关于mysql - Rails 3 Ruby 1.9.2:UTF-8字符在控制台和 View 中显示为乱码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7561552/

10-13 09:42