J'ai un problème similaire:un champ varchar avec une collation utf8_bin ayant un encodage ASCII-8BIT.
Le problème réside dans la gemme mysql2, pas dans Rails, ni dans les paramètres mysql, dans mon cas du moins, car cela ne se produit pas avec la gemme ruby-mysql.
Veuillez tester si le problème disparaît lorsque vous passez à ruby-mysql.
Le code suivant, exécuté depuis irb sur ruby 1.9.2, illustre le problème :
require 'mysql2'
c = Mysql2::Client.new(host: "localhost", username: "root", database: 'd')
c.query("select word from t where word = 'a'").to_a[0]["word"].encoding
# => #<Encoding:ASCII-8BIT>
Ceci sur une base de données mysql où tous les paramètres imaginables ont été définis sur un classement utf8_bin.
Dans le gem mysql2, dans le result.c
fichier à la ligne 253, il y a l'extrait suivant :
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Je crois que c'est là que l'encodage binaire (ASCII-8BIT) est défini, peut-être à cause de la collation utf8_bin ... Je l'ai supprimé et cela a résolu le problème, mais je suis sûr que cela introduira probablement d'autres problèmes, avec des blobs par exemple.