У меня есть страница ASPX, которая создает объект XMLDocument из данных SQL, а затем преобразует его в другой документ XML (канал RSS), используя файл XSLT с XPathNavigator и XslCompiledTransform. Иногда данные будут содержать умные кавычки (\ u2019), что приводит к ошибке (Невозможно перевести символ Unicode \ u2019 по индексу 947 на указанную кодовую страницу). Я не уверен, как работают все настройки кодирования, но есть ли способ предотвратить это, не проверяя эти типы символов во всех данных при создании атрибутов 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();