iconv:从CP1252转换为UTF-8

时间:2013-03-15 00:37:11

标签: iconv

我正在尝试将CP1252编码的字符串Çàïèñêèýêñïåäèòîðà转换为UTF-8。我试过这个命令:

iconv -c -f=WINDOWS-1252 -t=UTF-8 test.txt

没有运气,得到一些奇怪的结果:

ÃÃ>ÃÃÃÃÃÃÃÃÃÃÃ,,​​,

我尝试在这里输入相同的字符串(Çàïèñêèýêñïåäèòîðà),他们可以毫无问题地转换它: http://www.artlebedev.ru/tools/decoder/

出了什么问题?

6 个答案:

答案 0 :(得分:18)

使用命令Çàïèñêè ýêñïåäèòîðà将CP1252编码字符串iconv.exe -f CP1252 -t UTF-8 test.txt >testout.txt转换为UTF-8时,源文件test.txt(十六进制视图:

enter image description here

)将转换为目标文件testout.txt(十六进制视图:

enter image description here

Çàïèñêè ýêñïåäèòîðà的UTF-8代码。

你投入的同样垃圾将会到另一端。 iconv的行为是正确的,正如预期的那样。

您感到困惑的是,您没有看到您的期望,这是因为您输入的8位字符串实际上是在Windows-1251 (Cyrillic) Codepage中编码的。

→所以正确的代码页不是CP125 2 ,而是CP125 1

enter image description here

命令iconv.exe -f CP1251 -t UTF-8 test.txt >testout2.txt将源文件test.txt转换为目标文件testout2.txt(十六进制视图:

enter image description here

)这是Записки экспедитора的UTF-8代码,这是您的用户希望看到的内容

答案 1 :(得分:5)

你需要使用这个:

$ echo "Çàïèñêè ýêñïåäèòîðà" | iconv -t latin1 | iconv -f cp1251
Записки экспедитора

答案 2 :(得分:1)

我的解决方案:

iconv -f windows-1252 -t utf-8 in.file -o out.file

答案 3 :(得分:0)

如果您使用的是Linux,则应使用enconv

./enconv.sh -d /home/foo/example/directory -e ".java" -f "iso-8859-1" -t "utf-8"

答案 4 :(得分:0)

iconv -f utf8 -t cp1252 file.php | iconv -f cp1251 -t utf8 > file-utf8.php

答案 5 :(得分:-1)

尝试相反的

  iconv -c -f=UTF-8 -t=WINDOWS-1252 test.txt