【问题标题】:How do I read an escaped unicode character from an XML file into Javascript?如何将 XML 文件中的转义 unicode 字符读入 Javascript?
【发布时间】:2019-02-05 18:52:14
【问题描述】:

我有一个 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 方面做一些不同的事情?感谢任何人都可以提供的任何帮助。

【问题讨论】:

    标签: javascript xml unicode


    【解决方案1】:

    您在 XML 或 HTML 中的 u265c unicode 字符将这样表示:&amp;#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>
    

    【讨论】:

    • 谢谢!我知道这会很简单。就我而言,我也在设计 XML 文件,因此使用&amp;#x 以正确的方式对其进行编码是没有问题的。我把它放在 JS 格式的 XML 文件中,没有意识到 XMLHttpRequest 会自动处理转换。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2020-04-25
      • 1970-01-01
      • 2010-11-02
      • 2010-09-16
      相关资源
      最近更新 更多