iconv 未完全转换为 utf8
iconv not complete convert to utf8
我在本站转换我的文字时,转换正确:
http://string-functions.com/encodedecode.aspx
我选择来源 'Windows-1252' 和目标 'utf-8'.
在下面的屏幕截图中看到它:
https://i.stack.imgur.com/2Pn4E.png
但是当我用下面的代码转换时,有些字母没有转换,文本被打乱。
iconv -c -f UTF-8 -t WINDOWS-1252 < mytext.txt > fixed_mytext.txt
应转换的短语:
آموزش Ùˆ نرم Ø§ÙØ²Ø§Ø±Ù‡Ø§ÛŒ تعمیر مانیتور
如果真正转换应该是这个短语:
آموزش و نرم افزارهای تعمیر مانیتور
请帮助我。谢谢
我的原文:
http://www.todaymagazine.ir/forum.txt
原文为UTF-8。它被错误地解释为 Windows-1252 中的文本,并从 Windows-1252 转换为 UTF-8。从来没有这样做过。要恢复损坏,我们需要将文件从 UTF-8 转换为 Windows-1252,然后将其视为 UTF-8 文件。
但是有一个问题。字母 å 在 UTF-8 中编码为 0xd9 0x81
,代码 0x81
不是 Windows1252.
的一部分
幸运的是,第一次错误转换时,字符没有丢失或被问号代替。它被转换为控制字符 0xc2 0x81
。
0xd9
编码在Windows1252中,是字母Ù
,在UTF-8中是0xc3 0x99
。因此,转换后的文件中 å 的最终字节序列是 0xc3 0x99 0xc2 0x81
。
我们可以用 sed
脚本替换 ASCII-friendly,进行反向转换,然后再用 å 替换回来。
LANG=C sed $'s/\xc3\x99\xc2\x81/===FE===/g' forum.txt | \
iconv -f utf8 -t cp1252 | \
sed $'s/===FE===/\xd9\x81/g'
结果是以 UTF-8 编码的原始文件。
(先确保文中没有使用===FE===
!)
我在本站转换我的文字时,转换正确:
http://string-functions.com/encodedecode.aspx
我选择来源 'Windows-1252' 和目标 'utf-8'.
在下面的屏幕截图中看到它:
https://i.stack.imgur.com/2Pn4E.png
但是当我用下面的代码转换时,有些字母没有转换,文本被打乱。
iconv -c -f UTF-8 -t WINDOWS-1252 < mytext.txt > fixed_mytext.txt
应转换的短语:
آموزش Ùˆ نرم Ø§ÙØ²Ø§Ø±Ù‡Ø§ÛŒ تعمیر مانیتور
如果真正转换应该是这个短语:
آموزش و نرم افزارهای تعمیر مانیتور
请帮助我。谢谢
我的原文:
http://www.todaymagazine.ir/forum.txt
原文为UTF-8。它被错误地解释为 Windows-1252 中的文本,并从 Windows-1252 转换为 UTF-8。从来没有这样做过。要恢复损坏,我们需要将文件从 UTF-8 转换为 Windows-1252,然后将其视为 UTF-8 文件。
但是有一个问题。字母 å 在 UTF-8 中编码为 0xd9 0x81
,代码 0x81
不是 Windows1252.
幸运的是,第一次错误转换时,字符没有丢失或被问号代替。它被转换为控制字符 0xc2 0x81
。
0xd9
编码在Windows1252中,是字母Ù
,在UTF-8中是0xc3 0x99
。因此,转换后的文件中 å 的最终字节序列是 0xc3 0x99 0xc2 0x81
。
我们可以用 sed
脚本替换 ASCII-friendly,进行反向转换,然后再用 å 替换回来。
LANG=C sed $'s/\xc3\x99\xc2\x81/===FE===/g' forum.txt | \
iconv -f utf8 -t cp1252 | \
sed $'s/===FE===/\xd9\x81/g'
结果是以 UTF-8 编码的原始文件。
(先确保文中没有使用===FE===
!)