c#将代码页输入转换为显示为Unicode

时间:2014-10-09 08:00:56

标签: c# unicode encoding

我搜索并找到了一些在某些情况下有效的部分答案,但没有任何效果。我通过网络发送一个XML文件。该文件具有名为eg的编码encoding =“Windows-932”或encoding =“Windows-1254”等。我需要解析文件并获取某些信息并将该信息转换为Unicode字符并将其发送到另一台只能读取Unicode的计算机。

编码是

  • 1253它是西里尔字母所以Char E1 = ASCII225 = Unicode 0431.

  • 1254是土耳其语,所以Char E1 = ASCII225 = Unicode 00E1。

  • 1251它是希腊语所以Char E1 = ASCII225 = Unicode 03B1。

到目前为止,我认为我可以有一个查看编码的loookup表,然后我只是在E1 BUT前添加Unicode页面,这将无法在Unicode中工作,因为它们没有您所看到的相同页面位置以上。

为了使事情更复杂,我还可以获得编码,例如日语(shift-JIS),这是代码页932.现在这不会从同一页面获得所有日语,并且几乎ASCII页面上的每个字符都来自不同的Unicode页。

所以问题是如何在C#中将XML数据转换为Unicode并且每次都将其更正?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Encoding.GetEncoding("windows-1253").GetString(new byte[] {0xE1})  // -> "\u03B1" α
Encoding.GetEncoding("windows-1254").GetString(new byte[] {0xE1})  // -> "\u00E1" á
Encoding.GetEncoding("windows-1251").GetString(new byte[] {0xE1})  // -> "\u0431" б

但对于XML文件,您应该使用现有的XML解析器(例如XmlReaderXDocument.Load)来处理编码。