【问题标题】:c# Converting codepage input to display as Unicodec#将代码页输入转换为Unicode
【发布时间】:2014-10-09 08:00:56
【问题描述】:

我搜索并找到了一些在某些情况下有效但完全无效的部分答案。场景是我通过网络收到一个 XML 文件。该文件具有名为例如的编码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。

到目前为止,我认为我可以有一个查看编码的查找表,然后我只是在 E1 前面添加 Unicode 页面,但它在 Unicode 中不起作用,它们与你看到的页面位置不同以上。

为了进一步复杂化,我还可以获取编码,例如日文 (shift-JIS),它是代码页 932。现在这不会从同一页面获取所有日文,并且 ASCII 页面上的几乎每个字符都来自不同的 Unicode页面。

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

【问题讨论】:

    标签: c# unicode encoding


    【解决方案1】:
    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),它将为您处理编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多