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

med*_*iev 4 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
Run Code Online (Sandbox Code Playgroud)

输出:

?€?°? ?­?±?????? (不是我想要的)

2.

iconv -f LATIN1 -t UTF-8//TRANSLIT -o new.sql snippet.sql 
Run Code Online (Sandbox Code Playgroud)

输出:

Ã<88>ðàíñêèå (不是我想要的)

笔记

  • 我可能已经转换了一次然后两次以获得我想要的结果,但我很确定在我转换的最后一步WINDOWS-1251UTF-8//TRANSLIT我的笔记中记录的那一步.

  • 另一个注意事项是,Èðàíñêèå当文件编码为utf8(在vim中为native)时,我正在查看SQL文件.如果我set enc=latin1在vim中做,那么我~Hð| íñêèå认为这不会让它更加混乱.

Ign*_*ams 5

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql
Run Code Online (Sandbox Code Playgroud)

  • 实际上我似乎忘了在初始iconv中指定`// TRANSLIT`,而应该这样做. (3认同)