Как я могу прочитать экранированный символ Unicode из файла XML в Javascript? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть атрибут XML, который содержит символ Unicode, который мне нужно прочитать в JavaScript и действовать, и мне трудно понять, как работает экранирование.Мой XML-файл может содержать:

<item foo="\u265c" />

Я передаю XML-файл с использованием XMLHttpRequest, но у меня получится следующий результат:

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

Чего мне здесь не хватает?Я хочу, чтобы y был декодированным символом Юникода.Я мог бы создать функцию, которая ловит и интерпретирует строку \\u и преобразует ее, но я предполагаю, что есть более элегантный способ обработки.

Должен ли я хранить ее в файле XML по-другому, илия должен делать что-то другое на стороне JavaScript вещей?Спасибо за любую помощь, которую может оказать любой.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Соглашение \u265c ничего не значит для XML или любого программного обеспечения для обработки XML.(Нативное представление XML будет &#x265c;).

Если у вас есть документ, в котором по какой-то причине автор решил представить символ как \u265c, а не &#x265c;, тогдавам придется найти какой-то способ расшифровки на уровне приложения.В XPath 2.0 не так уж сложно написать простую функцию, которая преобразует шестнадцатеричное число в десятичное, а затем вы можете использовать функцию codepoints-to-string() для преобразования десятичного числа в символ Unicode.

0 голосов
/ 05 февраля 2019

Ваш u265c символ Unicode в XML или HTML будет выражаться так: &#x265c;.увидеть это работает здесь .

Вы также можете написать функцию преобразования: рабочий пример

<!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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...