C# XSLT转换后的前导非法字符
在XSLT转换之后,我不断得到与字符编码有关的主要问号,但我无法摆脱它们。我尝试了所有不同的编码,但都没用。在序列化对象时,我一直使用内存中的xml源 这是我的代码(尽可能短以重现问题) 可能很简单,但我想不出来 问候,C# XSLT转换后的前导非法字符,c#,asp.net,xslt,C#,Asp.net,Xslt,在XSLT转换之后,我不断得到与字符编码有关的主要问号,但我无法摆脱它们。我尝试了所有不同的编码,但都没用。在序列化对象时,我一直使用内存中的xml源 这是我的代码(尽可能短以重现问题) 可能很简单,但我想不出来 问候, Heras将ms.Position设置为0而不是1 C#数组的索引为零。将ms.Position设置为0,而不是1 C#数组是零索引的。可能是字节顺序标记(BOM)用于提示保存文本文件的编码方式。(默认情况下,Visual Studio将其大多数文本文件(如.cs)保存在带有B
Heras将
ms.Position设置为0而不是1
C#数组的索引为零。将ms.Position
设置为0,而不是1
C#数组是零索引的。可能是字节顺序标记(BOM)用于提示保存文本文件的编码方式。(默认情况下,Visual Studio将其大多数文本文件(如.cs
)保存在带有BOM的UTF-8中。)可能是字节顺序标记(BOM)用于提示保存文本文件的编码方式。(默认情况下,Visual Studio将其大部分文本文件(如.cs
)保存在带有BOM的UTF-8中。)尽管流由数组支持,但这是一个实现细节。我宁愿说那是零基的。我现在觉得很傻。这解决了它。。。我是如此专注于字符编码,以至于我没有注意到。。。谢谢虽然流由数组支持,但这是一个实现细节。我宁愿说那是零基的。我现在觉得很傻。这解决了它。。。我是如此专注于字符编码,以至于我没有注意到。。。谢谢
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();
}
}
<?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