非Unicode XML表示

时间:2020-03-05 18:58:34  来源:igfitidea点击:

我有一些元素值是Unicode字符的xml。是否可以用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进行反序列化,然后尝试使用XmlTextWriter指定默认编码(默认值为Windows-1252)来对其进行序列化。所有的unicode字符都以问号结尾。我正在使用VS 2008,C3.5

解决方案

回答

如果我理解这个问题,那就可以。我们只需在27544之后加上;

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

还是我们想知道如何以编程方式生成此XML?如果是这样,我们正在使用哪种语言/环境?

回答

好的,我用以下代码对其进行了测试:

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>

我肯定在其他地方做错了。谢谢帮助。