我的数据库表有一个包含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 console(或只是在视图中显示)并输出它显示的字段时: 3â5^ 2 = 5 ^(2/3); 5 ^(2/3)=3âš5^ 2
正如你所看到的那样,sqrt标志搞砸了。
我做错了什么?
答案 0 :(得分:1)
经过长时间的研究,我找到了解决方案。似乎有问题的列是双重编码的。他们曾经使用过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