代码之家  ›  专栏  ›  技术社区  ›  Richard Nienaber

非Unicode XML表示

  •  2
  • Richard Nienaber  · 技术社区  · 16 年前

    我有XML,其中一些元素值是Unicode字符。是否可以用ANSI编码表示?

    例如。

    <?xml version="1.0" encoding="utf-8"?>
    <xml>
    <value>受</value>
    </xml>
    

    <?xml version="1.0" encoding="Windows-1252"?>
    <xml>
    <value>&#27544;</value>
    </xml>
    

    我反序列化XML,然后尝试使用指定默认编码(默认为Windows-1252)的xmlTextWriter对其进行序列化。所有的Unicode字符都以问号结尾。我用的是vs 2008,c 3.5

    2 回复  |  直到 16 年前
        1
  •  5
  •   Richard Nienaber    16 年前

    好的,我用以下代码测试了它:

     string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><xml><value>受</value></xml>";
    
     XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.Default };
     MemoryStream ms = new MemoryStream();
     using (XmlWriter writer = XmlTextWriter.Create(ms, settings))
          XElement.Parse(xml).WriteTo(writer);
    
     string value = Encoding.Default.GetString(ms.ToArray());
    

    它正确地转义了Unicode字符,因此:

    <?xml version="1.0" encoding="Windows-1252"?><xml><value>&#x53D7;</value></xml>
    

    我一定是在别的地方做错了什么。谢谢你的帮助。

        2
  •  4
  •   Blair Conrad    16 年前

    如果我理解这个问题,那么是的。你只需要一个 ; 27544 :

    <?xml version="1.0" encoding="Windows-1252"?>
    <xml>
    <value>&#27544;</value>
    </xml>
    

    或者您想知道如何以编程方式生成这个XML?如果是,您在使用什么语言/环境?