Lai*_*ail 4 ruby-on-rails heroku utf-8 amazon-rds
我正在使用Amazon RDS作为数据库在Heroku上设置一个新的Rails(2.3.5)应用程序实例.我想把UTF-8用于一切.由于默认情况下RDS不是UTF-8,因此我设置了一个新的参数组并将数据库切换为使用该参数组,基本上是这样.似乎工作:
SHOW VARIABLES LIKE '%character%';
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /rdsdbbin/mysql-5.1.50.R3/share/mysql/charsets/
Run Code Online (Sandbox Code Playgroud)
此外,我已成功设置Heroku以使用RDS数据库.在rake db:migrate之后,一切看起来都很好:
CREATE TABLE `comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`commentable_id` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`content` text COLLATE utf8_unicode_ci,
`child_count` int(11) DEFAULT '0',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `commentable_id` (`commentable_id`),
KEY `index_comments_on_community_id` (`community_id`),
KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
在标记中,我包括:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
另外,我已经设定:
production:
encoding: utf8
collation: utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
...在database.yml中,虽然我不确定在这种情况下是否正在进行任何设置,因为Heroku在连接到RDS时似乎正在进行自己的配置.
现在,我通过应用程序中的表单输入评论:"Úbe®ƒåiL",但在数据库中我有"Úbe®Æ'Ã¥iL"
当Rails将数据库加载回数据库并将其呈现给页面时,它看起来很好,所以无论它采用哪种方式,它都会以相反的方式撤消.如果我查看Sequel Pro中的RDS数据库,如果我将编码设置为"UTF-8 Unicode via Latin 1",它看起来很好.所以似乎拉丁语-1在某个地方潜行.
当连接到本地MySQL数据库时,一切都在开发中.
有人必须先做过这个,对吧?我错过了什么?
有一种更简单的方法.您可以在数据库连接字符串中指定编码.编辑RDS加载项,然后追加?encoding=utf8&collation=utf8_general_ci
对我来说工作得很好,没有改变项目.
例如:
mysql://user:pass@abc.rds.amazonaws.com/my-db?encoding=utf8&collation=utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
参考:http: //blog.arvidandersson.se/2011/09/27/setting-activerecord-connection-to-utf8-on-heroku
| 归档时间: |
|
| 查看次数: |
2602 次 |
| 最近记录: |