ruby-on-rails ruby encoding utf-8 mysql2

ruby on rails - mysql2 gem 0.3.15 da ASCII-8BIT con el conjunto de codificación a "utf8"



encoding ruby (1)

En primer lugar, compruebe la intercalación my.cnf para todo el servidor. Deberías tener algo como:

[mysqld] init_connect=‘SET collation_connection = utf8_unicode_ci’ character-set-server = utf8 collation-server = utf8_unicode_ci [client] default-character-set = utf8

Segunda comprobación de colación para el cliente en Rails:

ActiveRecord::Base.connection.collation

Estoy utilizando MySQL 5.1.71 con Rails 4.0.4 ejecutándose en Ruby 2.0.0-p353 (a través de rbenv + ruby-build), con mysql2 gem 0.3.15. CentOS 6.5.

En database.yml, la codificación se establece en "utf8" y el adaptador es "mysql2" para todos los entornos.

Mis tablas usan UTF-8, "DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci".

En Ruby, Encoding::default_internal == Encoding::default_external == Encoding::UTF_8 .

¿Alguna idea de dónde más puedo mirar para ver por qué ActiveRecord todavía me pasa cadenas ASCII-8BIT? Tengo UTF-8 en mi Mac en desarrollo, pero ASCII-8BIT en producción en Linux.

Cuando enciendo una consola y uso mysql2 directamente obtengo ASCII, de modo que parece ser donde reside el problema.

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)

MOSTRAR producto 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