Как получить charCode из символов юникода?

Я хочу получить кодировку от (команда) и (alt) и после преобразования во что-то вроде \uXXXXX.

Я пробовал это:

console.log("⌘".charCodeAt(0));
console.log("⌥".charCodeAt(0));

И верните это:

8984

8997

После того, как я попробовал:

console.log("\u8984");
console.log("\u8997");

console.log("\uD8984");
console.log("\uD8997");

Но не работает, возвращает:

�4

�7

  • Как получить escape-последовательности (\uXXXX или \x0000) из символов Юникода?
  • Какой термин следует использовать для обозначения \uXXXX и \x0000?

person Guilherme Nascimento    schedule 12.08.2016    source источник
comment
Разве \u не шестнадцатеричный, а _2 _ / _ 3_ десятичный? :)   -  person bzlm    schedule 12.08.2016
comment
@bzlm Спасибо, если бы я знал, что правильный термин не сделал бы эту ошибку, какой термин подходит для \uXXXX и \x0000?   -  person Guilherme Nascimento    schedule 12.08.2016
comment
Я ответил вам правильным ответом.   -  person bzlm    schedule 12.08.2016


Ответы (6)


Вы можете использовать toString(16) для преобразования числа в шестнадцатеричное. Затем вы можете выполнить обратное преобразование, используя эту escape-последовательность кодовой точки Unicode.

console.log("⌘".charCodeAt(0).toString(16));
console.log("⌥".charCodeAt(0).toString(16));

console.log("\u2318");
console.log("\u2325");

person 4castle    schedule 12.08.2016
comment
Должно быть .charCodeAt(0).toString(16).padStart(4,"0") - person Kaiido; 04.03.2019

\uxxxx использует шестнадцатеричный, charCodeAt - десятичный

person ASDFGerte    schedule 12.08.2016
comment
Пример? И каков правильный термин для обозначения \uXXXX и \x0000? - person Guilherme Nascimento; 12.08.2016
comment
Mozilla, кажется, называет их escape-последовательностями Unicode. - person ASDFGerte; 12.08.2016

Попробуйте использовать коды символов в шестнадцатеричном формате:

console.log("⌘".charCodeAt(0).toString(16));
console.log("⌥".charCodeAt(0).toString(16));

person GOTO 0    schedule 12.08.2016
comment
Какой термин следует использовать для обозначений \uXXXX и \x0000? - person Guilherme Nascimento; 12.08.2016
comment
Они называются escape-последовательностями. \Икс?? занимает всего две шестнадцатеричные цифры. - person GOTO 0; 12.08.2016

Здесь необходимо понять две концепции; десятичные числа (8984) по сравнению с шестнадцатеричными числами (20ac) и управляющая последовательность, используемая для выражения символов Юникода внутри строк (\uxxxx).

"⌘".charCodeAt(0) (т. Е. 8984) возвращает десятичный номер кодовой точки Unicode для ⌘.

Чтобы выразить символы Unicode внутри строк с помощью их номеров кодовых точек, используйте escape-последовательность строки Unicode, которая состоит из escape-символа Unicode \u и шестнадцатеричной кодовой точки Unicode. номер 20ac, т.е. "\u20ac".

Вы также можете использовать String.fromCharCode() с десятичным номером кодовой точки Unicode (например, 8984), чтобы получить символ, но не внутри строки.

person bzlm    schedule 12.08.2016

Ты можешь попробовать:

console.log(String.fromCharCode(8984));

Надеюсь на эту помощь!

person Ha Hoang    schedule 12.08.2016
comment
Спасибо, но мне нужны экранированные последовательности. - person Guilherme Nascimento; 12.08.2016
comment
О! Символ \ uxxxx используется для поиска символа Unicode, заданного шестнадцатеричным числом xxxx. Таким образом, вы можете преобразовать в шестнадцатеричный формат, а затем использовать escape-последовательности Unicode. - person Ha Hoang; 12.08.2016

console.log("⌘".charCodeAt(0));
console.log("⌥".charCodeAt(0));

В десятичном формате это можно найти следующим образом

console.log(String.fromCharCode(8984));
console.log(String.fromCharCode(8997));
person Tarek Salah uddin Mahmud    schedule 12.08.2016
comment
Спасибо, но мне нужны экранированные последовательности. - person Guilherme Nascimento; 12.08.2016
comment
тогда вы можете использовать функцию parseInt (string, 16) или toString (16) - person Tarek Salah uddin Mahmud; 12.08.2016