Jag har ett liknande problem:ett varchar-fält med kollation utf8_bin som har en ASCII-8BIT-kodning.
Problemet ligger i mysql2 ädelstenen, inte i Rails, inte heller i mysql-inställningarna, åtminstone i mitt fall, eftersom det inte förekommer med ruby-mysql ädelstenen.
Testa om problemet försvinner när du byter till ruby-mysql.
Följande kod, körd från irb på ruby 1.9.2, visar 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>
Detta på en mysql-databas där alla tänkbara inställningar har satts till en utf8_bin-kollation.
I mysql2 pärla, i result.c
fil på rad 253, det finns följande kodavsnitt:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
Jag tror att det är här den binära (ASCII-8BIT) kodningen ställs in, kanske på grund av utf8_bin-kollationen... Jag har tagit bort den och det löste problemet, men jag är säker på att det förmodligen kommer att introducera andra problem, med blobbar till exempel.