如何将存储为LATIN1(sql)的Cyrillic转换为带有iconv的真正的UTF8 Cyrillic?

时间:2010-03-07 13:24:39

标签: sql character-encoding iconv

我有一个SQL转储文件,其中包含错误存储的西里尔俄语(WINDOWS-1251)文本,示例Èðàíñêèå应正确显示为Иранские

过去我已经成功转换了sql文件,但内存在我所做的和按什么顺序失败。

从逻辑上讲,它是有意义的,因为它存储在LATIN1中,我会从LATIN1转换为WINDOWS-1251,然后从WINDOWS-1251转换为UTF-8 // TRANSLIT或类似的东西。

到目前为止,我已经尝试过:

1

iconv -f WINDOWS-1251 -t UTF-8//TRANSLIT -o new.sql snippet.sql

输出:

Èðàíñêèå(不是我想要的)

2

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ð| íñêèå,好像这不会让它更加混乱。

1 个答案:

答案 0 :(得分:5)

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql