1

从 ruby​​1.8/mysql gem 迁移到 ruby​​1.9/mysql2 后,我从遗留数据库中得到了被报告为 utf8 的字符串,但看起来像是用 latin1 编码的(或者,可能有某种双重编码,就像直接 force_encoding 一样没有帮助)。

字符串示例:

Ñ„Ñ‹Ð²Ð°Ð¿Ñ€Ð¾Ð»Ð´Ð¶Ñ - just a test string - йцукенгшщзхъ

我希望能够将其转换为

фывапролджэ - just a test string - йцукенгшщзхъ

有人可以帮助转换 a) 使用 ruby​​ 代码和/或 b) 使用 SQL 吗?

由于复制粘贴可能会丢失一些信息,因此返回字符串中的字节: [195, 145, 226, 128, 158, 195, 145, 226, 128, 185, 195, 144, 194, 178, 195, 144, 194, 176, 195, 144, 194, 191, 195, 145, 226, 130, 172, 195, 144, 194, 190, 195, 144, 194, 187, 195, 144, 194, 180, 195, 144, 194, 182, 195, 145, 194, 141, 32, 45, 32, 106, 117, 115, 116, 32, 97, 32, 116, 101, 115, 116, 32, 115, 116, 114, 105, 110, 103、32、45、32、195、144、194、185、195、145、226、128、160、195、145、198、146、195、144、194、186、195、144、194、181、 195, 144, 194, 189, 195, 144, 194, 179, 195, 145, 203, 134, 195, 145, 226, 128, 176, 195, 144, 194, 183, 195, 145, 226, 128, 166、195、145、197、160]

4

2 回答 2

1

好的,我在How to fix double-encoded UTF8 characters (in an utf-8 table) 中找到了一个 SQL 解决方案。

CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)

有 Ruby 的接受者吗?

于 2013-04-19T17:59:41.363 回答
0

您可能希望将数据库连接的编码设置为config/database.yml,尝试不同的设置,直到获得所需的结果。

可能是您的连接latin1由于某种原因默认为,但在内部被重新解释为 UTF8。

于 2013-04-19T17:21:58.940 回答