gpt4 book ai didi

ruby-on-rails - 尽管在 Heroku 上使用 Rails 设置了新的参数组,但无法在 RDS 中存储 UTF-8

转载 作者:行者123 更新时间:2023-12-02 22:49:08 25 4
gpt4 key购买 nike

我正在 Heroku 上使用 Amazon RDS 作为数据库设置 Rails(2.3.5) 应用程序的新实例。我想对所有内容都使用 UTF-8。由于 RDS 默认情况下不是 UTF-8,因此我设置了一个新参数组并将数据库切换为使用该参数组,基本上按照 this 。似乎有效:

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/

此外,我已成功设置 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;

在标记中,我添加了:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

此外,我还设置了:

production:
encoding: utf8
collation: utf8_general_ci

...在database.yml中,尽管我不太有信心在这种情况下会采取任何措施来遵守这些设置,因为Heroku在连接到RDS时似乎正在执行自己的配置。

现在,我通过应用程序中的表单输入评论:“Úbe® ¡iL”,但在数据库中我得到了“Úbe® Æ’àiL”

当Rails 将其从数据库中加载回并将其呈现到页面时,它看起来很好,因此无论它以一种方式执行什么操作,它都会以另一种方式进行撤消。如果我查看 Sequel Pro 中的 RDS 数据库,如果将编码设置为“UTF-8 Unicode via Latin 1”,看起来就很好。所以看来 Latin-1 正在潜入某个地方。

在开发过程中,当连接到本地 MySQL 数据库时,一切正常。

以前一定有人这样做过,对吧?我错过了什么?

最佳答案

有一个更简单的方法。您可以在数据库连接字符串中指定编码。编辑 RDS 插件,并附加 ?encoding=utf8&collat​​ion=utf8_general_ci

对我来说效果很好,项目没有改变。

例如:

  mysql://user:pass@abc.rds.amazonaws.com/my-db?encoding=utf8&collation=utf8_general_ci

引用: http://blog.arvidandersson.se/2011/09/27/setting-activerecord-connection-to-utf8-on-heroku

关于ruby-on-rails - 尽管在 Heroku 上使用 Rails 设置了新的参数组,但无法在 RDS 中存储 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com