Я использую MySQL 5.1.71 с Rails 4.0.4, работающим на Ruby 2.0.0-p353 (через rbenv + ruby-build), с 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? Я получаю UTF-8 на моем Mac в разработке, но ASCII-8BIT в производстве на Linux.
Когда я запускаю консоль и напрямую использую 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)
SHOW CREATE TABLE:
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