मुझे एक ही समस्या है:एक varchar फ़ील्ड जिसमें संयोजन utf8_bin है जिसमें ASCII-8BIT एन्कोडिंग है।
समस्या mysql2 मणि में है, न कि रेल में, न ही MySQL सेटिंग्स में, मेरे मामले में कम से कम, क्योंकि यह रूबी-माइस्क्ल मणि के साथ नहीं होती है।
जब आप रूबी-माइस्क्ल पर स्विच करते हैं तो कृपया परीक्षण करें कि क्या समस्या दूर हो जाती है।
निम्नलिखित कोड, रूबी 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 संयोजन के कारण ... मैंने इसे हटा दिया है, और इससे समस्या हल हो गई है, लेकिन मुझे यकीन है कि यह शायद अन्य समस्याओं का परिचय देगा, उदाहरण के लिए ब्लॉब्स के साथ।