вставьте юникод как \ u1d6f c в текстовую строку javascript - PullRequest
1 голос
/ 14 марта 2020

Я пишу некоторый код, который сканирует строку на греческий символ в стиле TeX (например, \ Delta или \ alpha) и заменяет строку символом Unicode. Это прекрасно работает для не-италийских c греческих символов. Проблема в том, что я хочу использовать математическое значение itali c для строчных букв. Эти коды на один ди git длиннее. Например, код для буквы альфа: 1d6f c. Когда я помещаю \ u1d6f c в мою строку, она отображается как символ, соответствующий \ u1d6f (строчная буква m с наложенной тильдой), за которым следует буква c. Как заставить «правильное» чтение кода?

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Чтобы создать escape-последовательность \u с более чем 4 шестнадцатеричными цифрами (кодовая точка, принадлежащая так называемой астральной плоскости), вы можете использовать escape-код Unicode нотация \u{xxxxx}:

console.log ('\u{1d6fc}');

или вы можете позвонить String.fromCodePoint со значением кодовой точки, выраженным в шестнадцатеричном формате с использованием префикса 0x:

console.log (String.fromCodePoint (0x1d6fc));
1 голос
/ 14 марта 2020

Вы должны использовать UTF-16 суррогатные пары для символов за пределами диапазона UTF-16. В вашем конкретном случае вы можете использовать 0xD835 0xDEF C:

    console.log('\uD835\uDEFC')

Вот удобный калькулятор пар. Если вам не нужно беспокоиться о Inte rnet Explorer, вы также можете использовать String.fromCodePoint() , который будет иметь дело с этим беспорядком для вас. Если вам делать нужно беспокоиться о Inte rnet Explorer, MDN имеет полифил для этого метода .

...