Saya memiliki masalah yang sama:bidang varchar dengan collation utf8_bin memiliki penyandian ASCII-8BIT.
Masalahnya terletak pada permata mysql2, bukan di Rails, atau di pengaturan mysql, setidaknya dalam kasus saya, karena itu tidak terjadi dengan permata Ruby-mysql.
Harap uji apakah masalahnya hilang saat Anda beralih ke ruby-mysql.
Kode berikut, dijalankan dari irb pada ruby 1.9.2, menunjukkan masalahnya:
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>
Ini pada database mysql di mana setiap pengaturan yang mungkin telah diatur ke susunan utf8_bin.
Di permata mysql2, di result.c
file pada baris 253, ada cuplikan berikut:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Saya percaya ini adalah tempat pengkodean biner (ASCII-8BIT) sedang diatur, mungkin karena susunan utf8_bin... Saya telah menghapusnya, dan itu memecahkan masalah, tapi saya yakin itu mungkin akan menimbulkan masalah lain, dengan gumpalan misalnya.