问题描述
|
我发现utf-8是标准配置,但是Mysql不完全支持utf-8(4bytes)。
现在这是我的情况。
我的mysql排序规则变量显示为latin1,但是\“ database.yml \”(rails)中的编码机制为utf8。
我有一个大约有20个表的数据库,每个表中约有1k行。
我正在使用Mysql 5.0,ruby 1.8.7和rails 3。
我想至少支持一些不可打印的章程。
最好的选择是什么?
我是否应该将整个数据库更改为utf-8(转换非常痛苦,而且mysql完全不支持utf-8)。
我应该将\“ database.yml \”中的编码机制更改为latin1(新设置是否与已经存储的旧数据兼容)。
还有其他解决方案吗?
谢谢。
解决方法
我认为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;
当然....
始终备份您的数据,然后先在临时计算机上进行尝试