Юникодное значение от 0 до 1,114,111. Первые 128 значений Unicode совпадают с кодировкой ASCII.
Заметим, что charCodeAt() всегда возвращает значение, меньшее 65536. Это - из за того, что более высокие юникод-символы представлены парой вспомогательных псевдо-символов, которые вместе составляют реальный символ.
Из-за этого, чтобы получить полный символ для символов, юникод-значение которых больше или равно 65536, необходимо получить не только charCodeAt(0), но и charCodeAt(1) (как для строки из двух букв).
charCodeAt() возвращает NaN, если указанный индекс меньше нуля или больше/равен длине строки.
Пример: Использование charCodeAt
// возвратит 65, unicode-код для А"ABC".charCodeAt(0)// 65
Следующий пример предоставляет способ убедиться, что проход по циклу всегда дает целый символ, даже если строка содержит символы за пределами основного многоязычного набора.
Пример:
Выделить все
var str = 'A\uD800\uDC00Z'// 2 символа// мы могли объявить сложный символ напрямую,// т.к наш javascript-код имеет кодировку UTF.for(var i=0, chr; i < str.length; i++){if((chr = getWholeChar(str, i)) === false){continue// на позиции i вспомогательный символ}// alert будет последовательно вызван для всех символов alert(chr);
}function getWholeChar (str, i){var code = str.charCodeAt(i);
if(0xD800 <= code && code <= 0xDBFF){// верхний вспомогательныйif(str.length <= (i+1)){throw'High surrogate without following low surrogate';
}var next = str.charCodeAt(i+1);
if(0xDC00 > next || next > 0xDFFF){throw'High surrogate without following low surrogate';
}return str[i]+str[i+1];
}elseif(0xDC00 <= code && code <= 0xDFFF){// Нижний вспомогательныйif(i === 0){throw'Low surrogate without preceding high surrogate';
}var prev = str.charCodeAt(i-1);
if(0xD800 > prev || prev > 0xDBFF){throw'Low surrogate without preceding high surrogate';
}returnfalse;
}return str[i]// используем обращение к строке как к массиву}
Это интересно
Всемирную паутину как таковую впервые открыл Тим Бернерс-Ли в 1989 году. В первые дни существования весь интернет был размещен на его персональном компьютере марки NEXT.