Mám podobný problém:pole varchar s řazením utf8_bin s kódováním ASCII-8BIT.
Problém spočívá v drahokamu mysql2, ne v Rails, ani v nastavení mysql, alespoň v mém případě, protože se nevyskytuje u drahokamu ruby-mysql.
Otestujte prosím, zda problém po přepnutí na ruby-mysql nezmizí.
Následující kód, spuštěný z irb na ruby 1.9.2, demonstruje problém:
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>
To v databázi mysql, kde bylo každé myslitelné nastavení nastaveno na řazení utf8_bin.
V klenotu mysql2 v result.c
soubor na řádku 253, je zde následující úryvek:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Věřím, že zde se nastavuje binární (ASCII-8BIT) kódování, možná kvůli řazení utf8_bin... Odstranil jsem to a problém vyřešil, ale jsem si jistý, že to pravděpodobně způsobí další problémy, například s kuličkami.