我的数据库表中有一列具有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/