当我在本网站上转换我的文字时,请正确转换:
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
答案 0 :(得分:1)
原始文本采用UTF-8格式。它被错误地解释为Windows-1252中的文本,并从Windows-1252转换为UTF-8。这应该是从来没有做过的。要解除我们将文件从UTF-8转换为Windows-1252所需的损坏,然后将其视为UTF-8文件。
但是有一个问题。字母is以UTF-8编码为0xd9 0x81
,代码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===
!)