从 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, 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]
最佳答案
好的,我在 How to fix double-encoded UTF8 characters (in an utf-8 table) 中找到了一个 SQL 解决方案.
CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)
有 Ruby 的接受者吗?
关于mysql - 转换 MySQL 返回的编码错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110141/