Имам подобен проблем:поле 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... Премахнах го и това реши проблема, но съм сигурен, че вероятно ще въведе други проблеми, с петна например.