如何将unicode文本转换为utf8文本可读?

时间:2013-10-27 18:01:31

标签: character-encoding codepages mojibake

我遇到了关于Unicode和utf8的严重问题, 我将一段阿拉伯语/波斯文本文件保存到记事本中并保存,现在我看到了我的信息,如

Êæ Çíä ÓæÑÓ ÈÑäÇãå ÚÏÏ ÏáÎæÇåí Ñæ ÇÒ æÑæÏí ãííÑå æ Èå Øæá åãæä ÚÏÏ ãËáËí Ñæ ÑÓã ãí ˜äå 

我的问题是如何取回我的数据,对于我来说,重要的是要获得这些数据,提前感谢

2 个答案:

答案 0 :(得分:2)

通过保存为代码页1256(阿拉伯语/波斯语),然后将其解释为代码页1252(西欧),并最终保存为Unicode文本,该段落被扰乱。您可以使用C#来反转此过程:

string scrambled = "Êæ Çíä ÓæÑÓ ÈÑäÇãå ÚÏÏ ÏáÎæÇåí Ñæ ÇÒ æÑæÏí ãííÑå æ " + 
                   "Èå Øæá åãæä ÚÏÏ ãËáËí Ñæ ÑÓã ãí ˜äå";
byte[] bytes = Encoding.GetEncoding("windows-1252").GetBytes(scrambled);
string plainText = Encoding.GetEncoding("windows-1256").GetString(bytes);
Console.WriteLine(text);

纯文本输出是: “تواينسورسبرنامهعدددلخواهيروازوروديميگيرهوبهطولهمونعددمثلثيرورسمميکنه”

答案 1 :(得分:1)

在Linux上,您可以使用Gedit将其打开为1256编码文件:

gedit shahnameh.txt --encoding WINDOWS-1256

你可以通过gui做同样的工作。您只需在打开文件时从“打开”对话框中选择正确的编码。它应该位于打开对话框的底部。