XSL页面编码



我使用xslt 1.0来转换通过Server.Execute在.aspx页面上返回的一些xml。在Google Chrome中,如果我使用以下XSLT编码:

<xsl:output method="html" version="4.0" omit-xml-declaration="yes" encoding="utf-8" indent="yes" />

我在转换后的XML顶部留下了一个空间。如果我使用这种编码:

<xsl:output method="html" version="4.0" omit-xml-declaration="yes" encoding="iso-8859-1" indent="yes" />

空间已经消失了,但像£这样的东西显示为�.从未真正理解我应该使用哪种编码。有人能给我指正确的方向吗?谢谢

我认为问题在于,当您使用utf-8编码时,输出文件以一个指示编码的前缀开始——一个由两个字符0xEF0xBB组成的序列,而这个前缀就是您看到的额外空间。

您可以检查是否是这种情况,保存文件并检查前缀是否存在,然后查看手动删除前缀是否会解决问题。

当使用iso-8859-1(或其他非Unicode编码)时,没有前缀,因此没有问题,但使用非Unicode编码通常是个坏主意,因为它会在处理非ASCII字符时产生问题。

要获得不带前缀的UTF-8输出,请使用XmlWriter,如下所示:

  XmlWriterSettings settings = new XmlWriterSettings();
  settings.Encoding = new UTF8Encoding(false);
  using (XmlWriter writer = XmlWriter.Create(response.OutputStream, settings)) {
     // . . . apply the XSLT sending its output to 'writer' . . .
  }

其中CCD_ 4是所服务的HTTP请求的CCD_。

相关内容

  • 没有找到相关文章

最新更新