我有一个包含特殊字符的字符串(商标符号等)。此字符串设置为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
,但它给了??
答案 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),这些是我通常使用的方法。