搞乱编码和 XslCompiledTransform

2023-11-29

我正在搞乱编码。

一方面,我有一个以 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;

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

XML页面无法显示 无法使用样式查看 XML 输入 床单。请更正错误并 然后单击“刷新”按钮,或尝试 稍后再试。

从当前编码切换到 不支持指定的编码。 处理资源时出错 'http://localhost:2541/结果....

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

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

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

任何帮助,将不胜感激。

提前致谢。

此致。

Jose.


你的作者正在把这个写出来,因为Encoding属性返回 UTF-16 编码。而不是使用StringWriter(内存中是UTF-16)你可以初始化一个XmlTextWriter使用 UTF-8 的实例MemoryStream作为后备商店。

Edit:解决该问题的另一种方法是继承StringWriter并覆盖Encoding属性返回您喜欢的编码(例如您的情况是 UTF8)。这个想法来自于一个罗伯特·麦克劳斯撰写的博客文章.

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 社区评论(在底部)或以下内容博客文章.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搞乱编码和 XslCompiledTransform 的相关文章

随机推荐

  • 将水平(基于行)数据从 xlsx 文件读取到 R 数据帧中

    这是一篇 让我们尝试另一种方式 的帖子 与this one 是否可以定义 修改一个读取函数 可以处理这样的事实 数据存储在xlsx文件是基于行的 即每一行代表一个变量 并相应地对其进行转换 以便可以将其存储在基于列的 data frame
  • 我可以使用 Postgres 函数查找固定大小的旋转矩形内的点吗?

    我正在使用 Postgres 9 5 并且刚刚安装了 PostGIS 来实现一些扩展功能 我有一个包含 x y 点的表格 我想找到适合最大点数的矩形 约束是矩形边长是固定的 到目前为止 我正在计算框中有多少个没有旋转的点 我的观点以原点为中
  • 如何在 x64 Visual C++ 中执行裸函数和内联汇编程序

    我正在使用裸函数和内联汇编器代理方法调用 declspec naked void ProxyFunction static const unsigned int addressofRealFunction 0x0041b200 asm jm
  • 如何在 ASM 8086 中弹奏和弦?

    我想知道在集会上同时弹奏超过 1 个音符的最佳方式是什么 如果可以的话 请添加一个过程来解释您的答案 谢谢 橙色 下一个代码是很久以前在EMU8086和Windows XP中编写的程序 当时运行 现在我有 Windows 8 64 位 但它
  • 类型错误:__init__() 恰好需要 1 个参数(给定 3 个)pyXML

    我最近开始学习如何使用python来解析xml文件 我的教程来自http pyxml sourceforge net topics howto node12 html 当我运行以下代码时 出现错误 Traceback most recent
  • 如何在Android中捕获音频的输出流?

    我是开发新手 我尝试在 Android 平台上创建一个均衡器 如何在 Android 上捕获输出音频流 我只需要获取从我的应用程序发出的音频信息 我已经搜索了www developers android com 但没有找到任何信息 目前 A
  • 如何在iOS中获取丰富的电池信息?

    我想知道是否可以在 iOS 中接收有关电池的信息 例如 容量 mA 电压 V 循环次数 我知道 UIDevice 类 但电池电量不是我想要的 Try UI设备监听器 它基本上窃取了整个电池数据字典UIDevice不使用任何私有 API 它暴
  • 基础5:选项卡回调

    升级到 Foundation 5 如何向我的选项卡添加回调 看代码好像不太可能 它可以与 Foundation 4 中的部分兼容 他们说回调有两种方式http foundation zurb com docs components tabs
  • Lua __lt 不与 table.sort 一起使用,即使它已定义

    我有一个继承自实体类的图块类 实体类定义了 lt 虽然我可以从图块类访问它 但当我尝试将所有图块放入 table sort 时 出现 比较两个表 错误 实体类 local Entity function Entity New pos obj
  • plt。在子图中仅适用于一个图

    我是 python 新手 所以我希望我的问题足够好 我正在尝试根据两个不同的数据框创建两个子图 我的问题是 当我尝试定义标题和 xlim 时 它仅适用于一个图 这是我的脚本 fig axes plt subplots 1 2 figsize
  • Android Camera2 API 拉伸预览

    我正在使用 Google 示例项目 但如果不拉伸它 我似乎无法让预览正常工作 public void setAspectRatio int width int height if width lt 0 height lt 0 throw n
  • 如何消除 Jquery 中的冲突?

    我是 JQuery 新手 我在我的页面中使用了 2 个 jQueries 对于第一个 JQuery 我的脚本是这样的 现在 当我像这样使用第二个 jQuery 时 我丢失了第一个 jQuery 无法加载
  • Clearcase:将子分支移动到主分支

    在clearcase中 我开始在一个名为的分支上工作main release4 release5 在我开始工作后 release4 被合并到 main 中 我的同事开始开发 main release5 无论如何我可以移动我的main rel
  • 如果两个可能条件中的任何一个成立,则 maven-antrun-plugin 跳过目标

    我可以通过以下方式将两个属性 A 和 B 传递给 maven mvn test DA true or mvn test DB true 如果定义了 A 或 B 我希望跳过目标 我发现当只考虑A时这是可能的
  • 删除Delphi中标签之间变量子字符串的所有实例

    我正在将 HTML 中的可读文本提取到字符串中 并且需要删除之间的现有文本标签 实现这一目标最有效的方法是什么 现在我正在这样做 function RemoveIEScripts const s string string var i In
  • 如何在 Linux Mint 上防止一致的 java 暂停模式

    我有一个在 Linux Mint 上运行的 Java 应用程序 每一分钟 程序都会显示出非常明显的减慢 暂停 停顿时间持续 3 到 4 秒 当我们运行同一程序的更多实例时 它们也会每分钟暂停 3 到 4 秒 每个节目在一分钟的不同秒停止 最
  • 通过 Google Apps 帐户通过 C# 发送电子邮件

    我有一个标准的 Google Apps 帐户 我已通过 Google Apps 设置了自定义域 当我使用 Gmail 界面时 我能够通过 Google Apps 成功发送和接收电子邮件 但是 我想通过代码发送电子邮件 为了尝试这个 我一直在
  • 运营转型库?

    我正在寻找一个库 它允许我在多个用户之间实时同步文本 ala Google Docs 我偶然发现了运营转型 它似乎符合我的需求 话虽如此 我了解 OT 的要点 但不了解 OT 的数学或实施 因此 我想知道是否有一个拖放 JavaScript
  • 如果不可用,Schema.org dateModified 是否应该有一些默认值?

    对于 Schema orgArticle我收到错误https developers google com structured data testing tool for dateModified 建议使用 dateModified 字段
  • 搞乱编码和 XslCompiledTransform

    我正在搞乱编码 一方面 我有一个以 UTF 8 格式响应我的 url 我非常确定 感谢 firebug 插件 我使用以下代码打开读取 UTF 8 格式内容的 url StreamReader reader new StreamReader