gpt4 book ai didi

ruby-on-rails - mysql2 gem 0.3.15 提供编码设置为 "utf8"的 ASCII-8BIT

转载 作者:数据小太阳 更新时间:2023-10-29 06:42:00 24 4
gpt4 key购买 nike

我正在使用 MySQL 5.1.71 和运行在 Ruby 2.0.0-p353(通过 rbenv + ruby​​-build)上的 Rails 4.0.4,以及 mysql2 gem 0.3.15。 CentOS 6.5。

在 database.yml 中,编码设置为“utf8”,所有环境的适配器都是“mysql2”。

我的表都使用 UTF-8,“DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci”。

在 Ruby 中,Encoding::default_internal == Encoding::default_external == Encoding::UTF_8

关于我还能在哪里查看为什么 ActiveRecord 仍然给我 ASCII-8BIT 字符串的任何想法?我在开发中的 Mac 上使用 UTF-8,但在 Linux 上的生产环境中使用 ASCII-8BIT。

当我启动控制台并直接使用 mysql2 时,我得到了 ASCII,所以这似乎就是问题所在。

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

显示创建表产品:

CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varbinary(255) DEFAULT NULL,
`price` decimal(12,2) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`category` varbinary(255) DEFAULT NULL,
`quantity` int(11) NOT NULL,
`package_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_product_on_package_id` (`package_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

最佳答案

请记住,MySQL 的“utf8”编码并不是真正的 utf8。你需要使用 utf8mb4。

有关详细信息,请参阅:https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434

关于ruby-on-rails - mysql2 gem 0.3.15 提供编码设置为 "utf8"的 ASCII-8BIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719767/

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