mysql - Rails 3 ruby 1.9.2 : UTF-8 characters show garbled in console and view

标签 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 控制台(或仅在 View 中显示)并输出它显示的字段时: 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 characters show garbled in console and view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561552/

相关文章:

php - 将 MySQL 输出写入变量时出现 "Array to string conversion"

ruby - `&&=` 的用例

ruby - bool 检查字符串是否与 ruby​​ 中的正则表达式匹配?

ruby-on-rails-3 - Activeadmin 可以授权错误

email - 使用 Google 的 SMTP 服务器发送电子邮件

mysql - SQL 分隔大字段以加快查询速度

mysql - 并发编辑闭包树层次结构时出现死锁

ruby-on-rails - rails 3 : Working Mongoid captcha exists?

用于显示按日期分组的数据(按天递增)的 MySQL 查询

ruby - 背景中的 cucumber <reference>?