如何使用latin1或utf8用于rails 3&红宝石1.8.7

时间:2011-06-14 04:13:53

标签: mysql ruby-on-rails-3 encoding

我发现utf-8是标准,但是Mysql并不完全支持utf-8(4bytes)。

现在是我的情况。 我的mysql校对变量显示latin1但“database.yml”(rails)中的编码机制是utf8。

我有一个数据库,每个表中有大约20个表和大约1k行。 我使用的是Mysql 5.0,ruby 1.8.7和rails 3。

我想支持至少一些不可打印的章程。 什么是最好的选择?

  1. 我应该将整个数据库更改为utf-8(转换很痛苦,而且mysql完全不支持utf-8)。
  2. 我应该将“database.yml”中的编码机制更改为latin1(新设置是否与已存储的旧数据兼容)。
  3. 还有其他解决方案吗?
  4. 谢谢。

1 个答案:

答案 0 :(得分:1)

我认为:database.yml中的:encoding字段 就是在创建新数据库时使用的内容。

如果您更改此字段,则不会破坏您的应用

(事实上我认为它不会做任何事情,除非你使用rake db:create

我建议,如果您的应用针对的是美国或西欧以外的任何人 你应该使用utf8。 我发现令人惊讶的是,Ubuntu仍然默认为latin1。

这可以为空间“优化” 但是对于几乎所有有客户面向网站的人都会造成麻烦。

Google上有各种链接可以将您的数据库转换为UTF8 http://www.devcha.com/2008/03/convert-existing-mysql-database-from.html

类似

/* convert the default character set (used for new tables) */
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

/* convert a specific table */
ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

当然......

始终备份您的数据,并先在分段计算机上进行试用

相关问题