4

我正在使用 Mongoid 作为我的 ORM 将 MySQL 表中的数据导入 MongoDB。尝试将电子邮件地址保存为字符串时出现错误。错误是:

/Library/Ruby/Gems/1.8/gems/bson-1.2.4/lib/../lib/bson/bson_c.rb:24:in `serialize': String not valid UTF-8 (BSON::InvalidStringEncoding)
    from /Library/Ruby/Gems/1.8/gems/bson-1.2.4/lib/../lib/bson/bson_c.rb:24:in `serialize'

从我的 GUI - 这是表格信息的屏幕截图。你可以看到它是用 UTF8 编码的。

表信息

同样来自我的 GUI - 这是我正在导入的 MySQL 表中的字段的屏幕截图

mysql GUI中的数据是什么样的

这就是我从 MySQL CLI 获取数据时发生的情况。

mysql CLI 中的数据是什么样的

最后,当我检查我的 ruby​​ 对象中的数据时,我得到如下所示的内容: 检查红宝石对象

我在这里有点困惑,因为无论我的表是 UTF-8 还是那时髦的显然是有效的 UTF-8 字符作为双字节。有谁知道我为什么会收到这个错误?

4

1 回答 1

6

尝试使用这个助手:

http://snippets.dzone.com/posts/show/4527

它放了一个utf8方法?在字符串上。所以你可以从mysql中获取String,看看是不是utf8:

my_string.utf8?

如果不是,那么您可以尝试使用其他方法更改字符串的编码,例如:

my_string.asciify_utf8
my_string.latin1_to_utf8
my_string.cp1252_to_utf8
my_string.utf16le_to_utf8

也许这个字符串以这些编码之一保存在 mysql 上。

于 2011-03-24T11:37:09.213 回答