我有一个SQL转储文件,其中包含错误存储的西里尔俄语(WINDOWS-1251)文本,示例Èðàíñêèå
应正确显示为Иранские
。
过去我已经成功转换了sql文件,但内存在我所做的和按什么顺序失败。
从逻辑上讲,它是有意义的,因为它存储在LATIN1中,我会从LATIN1转换为WINDOWS-1251,然后从WINDOWS-1251转换为UTF-8 // TRANSLIT或类似的东西。
到目前为止,我已经尝试过:
iconv -f WINDOWS-1251 -t UTF-8//TRANSLIT -o new.sql snippet.sql
输出:
Èðà ГГ±ГЄГЁГҐ
(不是我想要的)
iconv -f LATIN1 -t UTF-8//TRANSLIT -o new.sql snippet.sql
输出:
Ã<88>ðà Ãñêèå
(不是我想要的)
备注
我可能已经转换了一次然后两次以获得我想要的结果,但我很确定在最后一步我从WINDOWS-1251
转换为UTF-8//TRANSLIT
记录在我的笔记中。
另一个注意事项是,当文件编码为utf8(vim中为native)时,我在SQL文件中查看Èðàíñêèå
。如果我在vim中set enc=latin1
,那么我会看到~Hð| íñêèå
,好像这不会让它更加混乱。
答案 0 :(得分:5)
iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql