J'ai une page ASPX qui crée un objet XMLDocument à partir de données SQL, puis le transforme en un autre document XML (flux RSS) en utilisant un fichier XSLT avec XPathNavigator et XslCompiledTransform. Parfois, les données contiendront des guillemets intelligents (\ u2019) qui se traduiront par une erreur (Impossible de traduire le caractère Unicode \ u2019 à l'index 947 en une page de code spécifiée). Je ne suis pas sûr de savoir comment fonctionnent tous les paramètres d'encodage, mais existe-t-il un moyen d'empêcher cela sans avoir à vérifier ces types de caractères dans toutes les données lorsque je crée les attributs XML?Impossible de traduire le caractère Unicode
Mon fichier XSLT ressemble à ceci ...
<?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"/>
J'ai essayé de changer le xsl: l'encodage de sortie utf-8 et UTF-16, mais toujours du même problème. Des idées?
Voici mon code si cela aide ...
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();
... ou 'Encoding.UTF8', qui est généralement préféré car il est plus petit pour l'écriture basée sur le latin (y compris l'anglais). (Je suis étonné que ce n'est pas déjà le défaut - il devrait être!) – Timwi