Ruby mysql gem将unicode字符串插入mysql数据库

Ruby mysql gem将unicode字符串插入mysql数据库,mysql,ruby,unicode,arabic,Mysql,Ruby,Unicode,Arabic,所以我有一些Unicode(阿拉伯语)文本数据存储在Mongoid模型中,我想将其插入mysql数据库。我不得不使用gsub来转义单引号,因为这会导致SQL插入错误 text = model.text.squish().gsub("'", %q(\\\')) db_con.query("insert into table (text) values ('#{text}')") 现在我的问题是,当我在phpmyadmin查看数据时,我看到的就是这个 اÙÙŠÙÙÙÙ…。。ملاييÙ

所以我有一些Unicode(阿拉伯语)文本数据存储在Mongoid模型中,我想将其插入mysql数据库。我不得不使用gsub来转义单引号,因为这会导致SQL插入错误

text = model.text.squish().gsub("'", %q(\\\'))
db_con.query("insert into table (text) values ('#{text}')")
现在我的问题是,当我在phpmyadmin查看数据时,我看到的就是这个

اÙÙŠÙÙÙÙ…。。ملايين الهوات٠تودع "واتساب" Ù


我尝试添加
force_编码('UTF-8')
,但这并没有改变任何事情,我还尝试使用
str.dump
进行转义,但当在phpmyadmin中查看时,它将数据转换为类似u{243}的Unicode码点。如何解决此问题。

通过在插入“设置字符集‘UTF8’”之前执行此查询来解决此问题


通过在插入“SET CHARACTER SET‘UTF8’”之前执行此查询修复了此问题


在输入数据之前,确保所有编码一致。如果您使用非unicode的默认字符集,然后插入unicode数据,mysql将不知道它将是unicode,并且将存储相同的字节,但不会转换为unicode(因为您告诉它已经是unicode格式的)。在数据库结构中,排序规则是“utf8\U general\U ci”。排序规则只针对字母顺序。默认字符集是什么?或者更准确地说,您的unicode数据是用什么字符集插入的?啊,我刚刚检查了信息模式模式,默认字符集是utf-8,数据也应该以UTF8的形式插入,需要注意的是,这些数据在Rails C和我的Rails应用程序的视图以及mongo shell中正确显示查找“Mojibake”,确保在输入数据之前所有编码都一致。如果您使用非unicode的默认字符集,然后插入unicode数据,mysql将不知道它将是unicode,并且将存储相同的字节,但不会转换为unicode(因为您告诉它已经是unicode格式的)。在数据库结构中,排序规则是“utf8\U general\U ci”。排序规则只针对字母顺序。默认字符集是什么?或者更准确地说,您的unicode数据是用什么字符集插入的?啊,我刚刚检查了信息模式模式,默认字符集是utf-8,数据也应该以UTF8的形式插入,需要注意的是,这些数据在Rails C和我的Rails应用程序的视图以及mongo shell中正确显示寻找“Mojibake”
text = model.text.squish().gsub("'", %q(\\\'))
db_con.query("SET CHARACTER SET 'UTF8'")
db_con.query("insert into table (text) values ('#{text}')")