当我在这个网站上转换我的文本时,要正确地转换:
http://string-functions.com/encodedecode.aspx
我选择源‘Windows1252’和目标'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
发布于 2017-02-19 00:37:33
原文载于UTF-8。它被错误地解释为Windows1252中的文本,并从Windows1252转换为UTF-8。这不应该做的。为了消除损坏,我们需要将文件从UTF-8转换为Windows-1252,然后将其视为UTF-8文件。
不过有个问题。字母0xd9 0x81
在UTF-8中编码,而代码0x81
不是Windows1252的一部分。
幸运的是,当第一次错误转换时,字符没有丢失,也没有被问号替换。它被转换成一个控制字符0xc2 0x81
。
0xd9
代码在Windows1252中,它是字母Ù
,在UTF-8中是0xc3 0x99
.因此,转换文件中的0xc3 0x99 0xc2 0x81
是ف的最后一个字节序列。
我们可以用一个sed
脚本替换ASCII友好的东西,进行反向转换,然后用ف替换它。
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===
!)
https://stackoverflow.com/questions/42319656
复制相似问题