gpt4 book ai didi

xml - 搞乱编码和 XslCompiledTransform

转载 作者:数据小太阳 更新时间:2023-10-29 02:00:39 25 4
gpt4 key购买 nike

我在搞乱编码。

一方面,我有一个以 UTF-8 格式响应我的 url(我非常确定,感谢 firebug 插件)。

我使用以下代码打开读取 UTF-8 内容的 url:

StreamReader reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);

另一方面,我有一个包含以下代码的转换 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="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
<br/>
hello
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

此 xslt 表也以 UTF-8 格式保存。

我使用以下代码将 xml 与 xslt 混合:

StringWriter writer = new StringWriter();
XslCompiledTransform transformer = new XslCompiledTransform();

transformer.Load(HttpContext.Current.Server.MapPath("xslt\\xsltsheet.xslt");
XmlWriterSettings xmlsettings = new XmlWriterSettings();
xmlsettings.Encoding = System.Text.Encoding.UTF8;
transformer.Transform(xmlreader, null, writer);

return writer;

毕竟我在网络浏览器中呈现了作者的内容并且我收到了以下错误:

The XML page cannot be displayed Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.

Switch from current encoding to specified encoding not supported. Error processing resource 'http://localhost:2541/Results....

<?xml version="1.0" encoding="utf-16"?>

我想知道在哪里可以找到 UTF-16 编码:

  • 我所有的文件都保存为UTF-8
  • 服务器的响应是UTF-8
  • 读取xslt表的方式配置为UTF-8。

如有任何帮助,我们将不胜感激。

提前致谢。

最好的问候。

何塞。

最佳答案

您的编写器导致它被写出,因为 Encoding 属性返回 UTF-16 编码。您可以初始化一个 XmlTextWriter 实例以使用 UTF-8 和 MemoryStream 作为后备存储。

编辑:解决此问题的另一种方法是继承自 StringWriter 并覆盖 Encoding 属性以返回您喜欢的编码(例如,在您的情况下为 UTF8)。这个想法来自blog post written by Robert McLaws .

public class UTF8StringWriter: StringWriter {
public UTF8StringWriter() {}
public UTF8StringWriter(IFormatProvider formatProvider): base(formatProvider) {}
public UTF8StringWriter(StringBuilder sb): base(sb) {}
public UTF8StringWriter(StringBuilder sb, IFormatProvider formatProvider): base(sb, formatProvider) {}

public override Encoding Encoding {
get {
return Encoding.UTF8;
}
}
}

遇到这个问题的不只你一个人……参见 MSDN community comment (在底部)或以下 blog post .

关于xml - 搞乱编码和 XslCompiledTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com