我有一个 ASPX 页面,它从 SQL 数据创建一个 XMLDocument 对象,然后使用带有 XPathNavigator 和 XslCompiledTransform 的 XSLT 文件将其转换为另一个 XML 文档(RSS 提要)。有时,数据将包含智能引号 (\u2019),这会导致错误(无法将索引 947 处的 Unicode 字符 \u2019 转换为指定的代码页)。我不确定所有编码设置是如何工作的,但有没有办法防止这种情况发生,而无需在创建 XML 属性时检查所有数据中的这些类型的字符?
我的 XSLT 文件看起来像这样......
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1"/>
我尝试将 xsl:output 编码更改为 utf-8 和 utf-16 但仍然遇到同样的问题。有任何想法吗?
如果有帮助,这是我的代码...
XmlDocument xdoc = new XmlDocument();
XmlNode xnode = requests.XMLNode(xdoc, imageType, Request, promotionPageId, eventPageId);
xdoc.AppendChild(xnode);
Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("Content-Type", "text/xml");
if (xsltFile != string.Empty)
{
XPathNavigator xnav = xdoc.CreateNavigator();
XslCompiledTransform xslTransform = new XslCompiledTransform();
xslTransform.Load(Server.MapPath(string.Format("~/xslt/{0}.xslt", xsltFile)));
xslTransform.OutputSettings.Encoding.
xslTransform.Transform(xnav, null, Response.OutputStream);
}
else
{
xdoc.Save(Response.OutputStream);
}
Response.End();