我有 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

有帮助吗?

解决方案

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

 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>

我一定是在其他地方做错了什么。谢谢您的帮助。

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top