如何将XML文件中的转义unicode字符读入Javascript?

时间:2019-02-05 18:52:14

标签: javascript xml unicode

我有一个XML属性,其中包含一个Unicode字符,需要将其读入JavaScript并对其执行操作,而且我很难理解转义的工作方式。我的XML文件可能包含:

<item foo="\u265c" />

我使用XMLHttpRequest带来了XML文件,但结果如下:

x = itemObject.getAttribute('foo') // x = "\\u265c"
y = decodeURIComponent(x)          // y = "\\u265c"

我在这里想念什么?我希望y是已解码的Unicode字符。我可以创建一个捕获并解释\\u字符串并将其转换的函数,但是我假设有一种更优雅的方式来处理它。

我应该将它以不同的方式存储在XML文件中,还是应该在JavaScript方面做一些不同的事情?感谢任何人都能提供的帮助。

2 个答案:

答案 0 :(得分:2)

您在XML或HTML中的u265c Unicode字符将表示为:&#x265c;
请参阅here

您还可以编写转换函数:
working example

<!DOCTYPE html>
<html>
  <head>
    <style>
    </style>
  </head>
  <body>
    <input type="button" value="convert" onClick="convert('u265c')"/>
    <span id="myspan"></span>


    <script>
    function convert(unchar)
      {
        var base = '&#x';
        var fixed = unchar.replace("u","");
        document.getElementById("myspan").innerHTML = base + fixed + ";";
      }

    </script>
  </body>
</html>

答案 1 :(得分:1)

约定\u265c对XML或任何XML处理软件没有任何意义。 (本机XML表示形式为&#x265c;)。

如果您有一个文档,由于某种原因,作者决定将该字符表示为\u265c而不是&#x265c;,那么您将必须找到某种解码方式在应用程序级别。在XPath 2.0中,编写一个将十六进制转换为十进制的简单函数并不难,然后您可以使用codepoints-to-string()函数将十进制数字转换为Unicode字符。