在 XSLT 转换之后,我不断收到(似乎)与字符编码有关的领先问号,但我无法摆脱它们。我尝试了所有不同的编码,但没有帮助。当我序列化对象时,我坚持使用内存中的 xml 源。
这是我的代码(尽可能短地重现问题)
var xd = new XmlDocument();
xd.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><Test><AAA>AAA</AAA></Test>");
var xslt = new System.Xml.Xsl.XslCompiledTransform();
xslt.Load(Server.MapPath("/Transformations/Test.xslt"));
using (var ms = new MemoryStream())
{
xslt.Transform(xd, null, ms);
ms.Position = 1;
using (var sr = new StreamReader(ms, System.Text.Encoding.UTF8, true))
{
string s = sr.ReadToEnd();
}
}
这是 XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="text" indent="no"/>
<xsl:template match="Test">
BBB<xsl:value-of select="AAA" />CCC
</xsl:template>
</xsl:stylesheet>
产生:
��\r\n\t\tBBBAAACCC\r\n\t
这可能很简单,但我无法弄清楚......
问候,
赫拉斯