在rails 3&ruby 1.8.7中使用latin1或utf8的方法

问题描述

| 我发现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;
当然.... 始终备份您的数据,然后先在临时计算机上进行尝试     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...