在Ruby 1.8.7中插入MySQL数据库时,Unicode格式丢失了

时间:2011-09-03 21:23:22

标签: mysql ruby json unicode utf-8

在Ruby中,我有一堆用UTF-8编码的字符串,例如:“HEC Montr \ u00e9al”。

当我使用'mysql'gem将其插入我的MySQL表(格式为utf8_general_ci)时,反斜杠被删除。是什么赋予了 :) ?你们中的任何人都知道这里到底发生了什么事吗?

编辑:

示例字符串:

>> p mystring
"HEC Montr\\u00e9al"

并在插入后的数据库中:

HEC Montru00e9al

2 个答案:

答案 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(...