經過XSLT轉換後,我不斷得到(似乎)與字符編碼有關的主要問號,但我無法擺脫它們。我嘗試了所有不同的編碼,但它沒有幫助。當我序列化對象時,我被困在內存中的xml源代碼中。XSLT轉換後引導非法字符
這是我的代碼(儘可能短重現該問題)
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
這也可能是很簡單,但我不知道它...
個問候,
赫拉斯
也許這是字節順序標記(BOM),它用來給出一個提示,其中保存了對文本文件的編碼。 (默認情況下,Visual Studio將其大部分文本文件保存爲UTF-8中的「.cs」)。[另請參閱此處](http://en.wikipedia.org/wiki/Byte_Order_Mark) – fero