从ruby1.8 / mysql gem迁移到ruby1.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,149,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]
答案 0 :(得分: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的任何接受者?
答案 1 :(得分:0)
您可能希望在config/database.yml
中设置数据库连接的编码,尝试不同的设置,直到获得所需的结果。
由于某种原因,您的连接可能是默认为latin1
,但在内部被重新解释为UTF8。