Jeg har et lignende problem:et varchar-felt med kollation utf8_bin med en ASCII-8BIT-kodning.
Problemet ligger i mysql2-perlen, ikke i Rails, og heller ikke i mysql-indstillingerne, i hvert fald i mit tilfælde, fordi det ikke forekommer med ruby-mysql-perlen.
Test venligst, om problemet forsvinder, når du skifter til ruby-mysql.
Følgende kode, der køres fra irb på ruby 1.9.2, demonstrerer problemet:
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>
Dette på en mysql-database, hvor alle tænkelige indstillinger er sat til en utf8_bin-kollation.
I mysql2-perlen, i result.c
fil på linje 253, er der følgende uddrag:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Jeg tror, det er her, den binære (ASCII-8BIT) kodning bliver indstillet, måske på grund af utf8_bin-sorteringen... Jeg har fjernet det, og det løste problemet, men jeg er sikker på, at det sandsynligvis vil introducere andre problemer, med klatter for eksempel.