В чем разница между String.prototype.codePointAt()
и String.prototype.charCodeAt()
в JavaScript?
'A'.codePointAt(); // 65
'A'.charCodeAt(); // 65
В чем разница между String.prototype.codePointAt()
и String.prototype.charCodeAt()
в JavaScript?
'A'.codePointAt(); // 65
'A'.charCodeAt(); // 65
Из Mozilla:
Метод charCodeAt() возвращает целое число от 0 до 65535, представляющее кодовую единицу UTF-16 с заданным индексом (кодовая единица UTF-16 соответствует кодовой точке Unicode для кодовых точек, представленных в одной кодовой единице UTF-16, но может также быть первой кодовой единицей суррогатной пары для кодовых точек, которые не могут быть представлены в одной кодовой единице UTF-16, например, кодовые точки Unicode> 0x10000). Если вам нужно полное значение кодовой точки, используйте codePointAt().
charCodeAt()
— это UTF-16, codePointAt()
— это Unicode.
codePointAt
возвращает целое число, вы можете преобразовать его в шестнадцатеричный, вызвав .toString(16)
, если вы ищете таблицу Unicode вручную.
- person Kevin Lee; 20.07.2017
Чтобы добавить несколько ответов ToxicTeacakes, вот еще один пример, который поможет вам понять разницу:
"????".charCodeAt(0).toString(16);//d842
"????".charCodeAt(1).toString(16);//dfb7
"????".codePointAt(0);//20bb7
"????".codePointAt(1);//dfb7
console.log("\ud842\udfb7");//????, an example of hexadecimal digits
console.log("\u20bb7\udfb7");//₻7�
console.log("\u{20bb7}");//???? an unicode code point escapes the "\ud842\udfb7"
Ниже представлена информация о строковых литералах javascript. :
\uXXXX
Символ Unicode, определяемый четырьмя шестнадцатеричными цифрами XXXX. Например, © — это последовательность Unicode для символа авторского права.\u{XXXXX}
кодовая точка Unicode
экранирует. Например, \u{2F804} совпадает с простым escape-символом Unicode ������.
см. также msdn
codePointAt(1)
возвращает значение, если codePointAt(0)
захватывает всю кодовую точку? (ii) Вы знаете, как здесь подходит toLowerCase()
против toLocaleLowercase()
? Имеют ли наборы символов, подобные тому, что в вашем ответе, даже нижний/верхний регистр?
- person Dmitry Minkovsky; 04.12.2017
String.prototype.charAt
и String.prototype.charCodeAt
. Если в указанном месте нет элемента позиция, возвращается undefined. Если суррогатная пара UTF-16 не начинается с позиции pos, возвращается единица кода с позиции pos.. Таким образом, в индексе 1, 16-й бит, нет суррогатной пары в диапазоне индексов [1,2], поэтому он становится сломанным символом ��� (�)
- person dosentmatter; 21.12.2017
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt
из этого URL-адреса вы можете получить различия, их функции почти одинаковы, но есть некоторые различия в возврате и недопустимом аргументе.