【问题标题】:How do I properly escape international characters in XML with encoding UTF-8?如何使用 UTF-8 编码正确转义 XML 中的国际字符?
【发布时间】:2011-10-28 14:44:29
【问题描述】:

目前,我有 Javascript 生成 XML,其编码设置为 UTF-8,我们遇到了一种情况,即我们偶尔会在 XML 中出现一些国际字符。例如:

<?xml version="1.0" encoding="UTF-8"?>
<example>
      <comments><![CDATA[Hola. Mi nombre es Pat. ¿Cómo puedo ayudarle?]]></comments>
</example>

这样保留国际字符会在浏览器中打开时出现编码错误。将 XML 编码更改为 ISO 标准可以解决问题,但我们担心如果编码不同,XML 的接收者将无法正确读取它。目前我们的解决方案是像这样逃避这些字符:

<?xml version="1.0" encoding="UTF-8"?>
<example>
    <comments><![CDATA[Hola. Mi nombre es Pat. &#191;C&#243;mo puedo ayudarle?]]></comments>
</example>

我的问题是,这是逃避这些字符的正确方法吗?

【问题讨论】:

  • 我想说问题不在于 XML;这与您使用编辑器或浏览器(或两者)的方式有关。
  • 为什么不将 CDATA 编码为 UTF-8?这将是“正确”的解决方案,恕我直言。
  • 哪个浏览器在您的第一个示例中出现错误?恕我直言,它应该是正确的。否则,头部中的 XML 编码规范将没有任何意义。
  • @Robert 所有这些,chrome、safari 和 firefox(IE 只是忽略了这一切)。
  • @ckruse 我们确实将该部分包裹在 CDATA 标记中,有没有办法直接在 CDATA 元素上指定编码?

标签: javascript xml utf-8


【解决方案1】:

您写道,Javascript 正在生成编码设置为 UTF-8 的 XML。你怎么做到这一点?

您是否检查过生成的文件是否真的是 UTF-8 编码的?我有点怀疑——如果是,你不会有任何麻烦,对吧?我的猜测是您将 XML 文件中的编码指定为 encoding="UTF-8" 但文件编码并不是真正的 utf-8。

最好, 罗纳德

【讨论】:

  • 我认为你是对的,因为我在 javascript 生成 XML 后检查文件的方式是将其转换为纯文本,而不是编码为 UTF-8跨度>
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 2016-08-18
相关资源
最近更新 更多