Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#将代码页输入转换为Unicode显示_C#_Unicode_Encoding - Fatal编程技术网

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

c#将代码页输入转换为Unicode显示,c#,unicode,encoding,C#,Unicode,Encoding,我搜索并找到了一些在某些情况下有效的部分答案,但在所有情况下都无效。场景是通过网络发送一个XML文件。该文件的编码名为encoding=“Windows-932”或encoding=“Windows-1254”等。我需要解析文件并获取某些信息,然后将这些信息转换为Unicode字符,并将其发送到另一台只能读取Unicode的机器上 编码也是如此 1253它是西里尔文,所以字符E1=ASCII225=Unicode 0431 1254它是土耳其语,所以字符E1=ASCII225=Unicode

我搜索并找到了一些在某些情况下有效的部分答案,但在所有情况下都无效。场景是通过网络发送一个XML文件。该文件的编码名为encoding=“Windows-932”或encoding=“Windows-1254”等。我需要解析文件并获取某些信息,然后将这些信息转换为Unicode字符,并将其发送到另一台只能读取Unicode的机器上

编码也是如此

  • 1253它是西里尔文,所以字符E1=ASCII225=Unicode 0431

  • 1254它是土耳其语,所以字符E1=ASCII225=Unicode 00E1

  • 1251它是希腊语,所以字符E1=ASCII225=Unicode 03B1
到目前为止,我认为我可以有一个loookup表,它可以查看编码,然后我只在E1前面添加Unicode页面,但这不会起作用,因为在Unicode中,它们的页面位置与上面看到的不同

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

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

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解析器(例如
XmlReader
XDocument.Load
),它将为您处理编码