0

我正在尝试从使用特殊字符的字符串中编写正确的 svg。我正在为 svg 文档使用 UTF-8 编码。我正在处理 javascript 。字符串是这样的:

<glyph unicode="&#xa5;" horiz-adv-x="819" />

使用 DOMParser api 编写 xml 时,它会将 ¥ 转换为 ¥,这是不正确的 xml 并且浏览器会抛出 XML Parsing 错误。

这是我要转换为 SVG 文档的完整文本。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"   "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
  <defs>
    <font id="DearestRegular" horiz-adv-x="2048" >
      <font-face units-per-em="2048" ascent="1638" descent="-410" />
      <glyph unicode="&#xa5;" horiz-adv-x="819" />
    </font>
 </defs>
</svg>

使用 DOMParser 我得到如下输出:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"   "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
  <defs>
    <font id="DearestRegular" horiz-adv-x="2048" >
      <font-face units-per-em="2048" ascent="1638" descent="-410" />
      <glyph unicode="¥" horiz-adv-x="819" />
    </font>
 </defs>
</svg>

这会在浏览器中引发 XML 解析错误。

4

1 回答 1

2

这不是不正确的 XML。

可能您的服务器在 HTTP 标头中发送了错误的字符编码信息。

(由于 XML 声明没有另外说明,您应该使用 UTF-8)

于 2012-07-17T14:22:39.670 回答