C#特殊字符在XML中无法正确显示

时间:2009-12-10 11:25:53

标签: c# xml special-characters

我有一个包含特殊字符的字符串(商标符号等)。此字符串设置为XML节点值。但是特殊字符在XML中没有正确呈现,显示??。这就是我如何使用它。

String str=xxxx; //special character string

XmlNode node = new XmlNode();
node.InnerText = xxxx;

我尝试了HttpUtility.htmlEncode(xxxx),但它将其转换为“& amp;#8482;”所以xml的输出是“&#8482”;而不是™ 我也试过XmlConvert.ToString()XmlConvert.EncodeName,但它给了??

2 个答案:

答案 0 :(得分:3)

我强烈怀疑问题是你如何查看XML。您是否确定无论您在查看它的是什么,都使用正确的编码?

如果保存XML然后重新加载并将内部文本作为字符串获取,它是否具有正确的值?如果是这样,问题出在哪里?

您不应该自己执行额外的编码 - 让XML API完成它们的工作。

答案 1 :(得分:0)

我之前也遇到过使用htmlEncode()的一些字符的问题。以下是编写XML的不同方法的一个很好的示例:Different Ways to Escape an XML String in C#。查看#3(System.Security.SecurityElement.Escape())和#4(System.Xml.XmlTextWriter),这些是我通常使用的方法。