【发布时间】:2009-06-04 00:17:14
【问题描述】:
我正在尝试使用 Rake 任务将一些旧数据从 MS Access 迁移到 MySQL。我正在使用 Ruby 1.8.6 在 Windows XP 上工作。
我在database.yml 中将 Rails 的编码设置为“utf8”。
另外,MySQL 的默认字符集是 utf8。
99% 的数据正常,但我会时不时地得到一个列值,它会给我这样的错误:
Mysql::Error: Incorrect string value: '\x92 Comm...' for column 'name'
at row 1:
INSERT INTO `organizations` ( [...] )
VALUES('Lawyers’ Committee', [...] )
看起来给 MySQL 带来麻烦的东西是紧跟在“Lawyers”一词中的“s”之后的撇号。
还有一个……
Mysql::Error: Incorrect string value: '\x99 aoc' for column 'department'
at row 1:
INSERT INTO `addresses`
[...]
'TRInfo™ aoc'
[....]
看起来它在“TRInfo”之后的“TM”上卡住了。
是否有任何 Ruby 或 Rails 方法可以让我通过运行数据来清除 MySQL 会阻塞的任何字符?
理想情况下,最好将它们替换为更可口的字符 - 将撇号替换为单引号,将 TM 符号替换为字符串“(TM)”。
或者,如果我能以某种方式配置 MySQL 以按原样存储这些字符而不会出现错误,那也很棒。
【问题讨论】:
标签: mysql ruby-on-rails ruby encoding character-encoding