У меня похожая проблема: поле varchar с сопоставлением utf8_bin с кодировкой ASCII-8BIT.
Проблема заключается в геме mysql2, а не в Rails или в настройках mysql, по крайней мере, в моем случае, потому что это не происходит с гемом ruby-mysql.
Пожалуйста, проверьте, исчезла ли проблема при переключении на ruby-mysql.
Следующий код, запущенный из irb на ruby 1.9.2, демонстрирует проблему:
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>
Это в базе данных mysql, где для каждого возможного параметра задано сопоставление utf8_bin.
В геме mysql2 в файле result.c
в строке 253 есть следующий фрагмент:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Я полагаю, что именно здесь задается двоичная (ASCII-8BIT) кодировка, возможно, из-за сортировки utf8_bin ... Я удалил ее, и это решило проблему, но я уверен, что она, вероятно, представит другие проблемы, например, с каплями.