在Ruby中,我有一堆用UTF-8编码的字符串,例如:“HEC Montr \ u00e9al”。
当我使用'mysql'gem将其插入我的MySQL表(格式为utf8_general_ci)时,反斜杠被删除。是什么赋予了 :) ?你们中的任何人都知道这里到底发生了什么事吗?
编辑:
示例字符串:
>> p mystring
"HEC Montr\\u00e9al"
并在插入后的数据库中:
HEC Montru00e9al
答案 0 :(得分:2)
这不是UTF:
'HEC Montr\u00e9al'
这是JSON编码的Unicode字符串的ASCII表示。如果它是UTF-8,它看起来像:
'HEC Montréal'
您在某处无法正确解码JSON输入,或者当您的服务器需要纯文本时,您的客户端代码正在发送服务器JSON。
首先,您需要弄清楚为什么在不期望它们时获取JSON编码的字符串或弄清楚为什么您没有正确解码JSON。然后你可以看看数据库是否正在破坏你的UTF-8。
答案 1 :(得分:1)
我相信你必须明确告诉MySQL gem期望utf8。像这样:
db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, 'utf8')
db.real_connect(...