Rails 3 Ruby 1.9.2:UTF-8字符在控制台和视图中显示乱码

时间:2011-09-26 21:29:28

标签: mysql ruby ruby-on-rails-3 utf-8 ruby-1.9.2

我的数据库表有一个包含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标志搞砸了。

我做错了什么?

1 个答案:

答案 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