String.prototype.charCodeAt()
Метод charCodeAt() возвращает числовое значение Юникода для символа по указанному индексу (за исключением кодовых точек Юникода, больших 0x10000).
Синтаксис
str.charCodeAt(index)
Параметры
Целое число больше, либо равное 0 и меньше длины строки; если параметр не является числом, он устанавливается в 0.
Описание
Кодовые точки Юникода простираются в диапазоне от 0 до 1114111 (0x10FFFF). Первые 128 кодовых точек Юникода напрямую отображаются в кодировку ASCII. Информацию по Юникоду смотрите в Руководстве по JavaScript.
Обратите внимание, что метод charCodeAt() всегда возвращает значение, меньшее 65536. Так происходит потому, что большие кодовые точки представляются парой (меньших значений) «суррогатных» псевдо-символов, которые используются для составления настоящего символа. Поэтому для того, чтобы получить полный символ для значений символов от 65536 и выше, необходимо получить не только значение charCodeAt(i) , но также значение charCodeAt(i + 1) (как если бы строка состояла из двух букв). Смотрите второй и третий примеры ниже.
Метод charCodeAt() возвращает NaN , если указанный индекс меньше нуля или больше длины строки.
Обратная совместимость: в более старых версиях (например, в JavaScript 1.2) метод charCodeAt() возвращал число из кодировки ISO-Latin-1 по указанному индексу. Диапазон символов в кодировке ISO-Latin-1 простирается от 0 до 255. Первые 127 чисел напрямую отображаются в кодировку ASCII.
Примеры
Пример: использование метода charCodeAt()
В следующем примере возвращается число 65, значение Unicode для латинского символа «A».
"ABC".charCodeAt(0); // вернёт 65
Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке неизвестно
Эта версия может использоваться в циклах for, даже когда неизвестно, были ли до указанной позиции символы из не-БМП.
function fixedCharCodeAt(str, idx) // например, fixedCharCodeAt('\uD800\uDC00', 0); // 65536 // например, fixedCharCodeAt('\uD800\uDC00', 1); // false idx = idx || 0; var code = str.charCodeAt(idx); var hi, low; // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, // чтобы трактовать старшую часть суррогатной пары в частной плоскости как // одиночный символ) if (0xd800 code && code 0xdbff) hi = code; low = str.charCodeAt(idx + 1); if (isNaN(low)) throw "Старшая часть суррогатной пары без следующей младшей в fixedCharCodeAt()"; > return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000; > if (0xdc00 code && code 0xdfff) // Младшая часть суррогатной пары // Мы возвращаем false, чтобы цикл пропустил эту итерацию, // поскольку суррогатная пара // уже обработана в предыдущей итерации return false; // hi = str.charCodeAt(idx - 1); // low = code; // return ((hi - 0xD800) * 0x400) + // (low - 0xDC00) + 0x10000; > return code; >
Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке известно
function knownCharCodeAt(str, idx) str += ""; var code, end = str.length; var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; while (surrogatePairs.exec(str) != null) var li = surrogatePairs.lastIndex; if (li - 2 idx) idx++; > else break; > > if (idx >= end || idx 0) return NaN; > code = str.charCodeAt(idx); var hi, low; if (0xd800 code && code 0xdbff) hi = code; low = str.charCodeAt(idx + 1); // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000; > return code; >
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-string.prototype.charcodeat |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- String.fromCharCode()
- String.prototype.charAt()
- String.fromCodePoint()
- String.prototype.codePointAt()
JavaScript коды символов (коды клавиш)
Очень часто клиентский JavaScript используется для выполнения простых задач, которые в противном случае потребовалось бы обрабатывать на серверной стороне. Многие из этих простых задач включают обработку текста или символов, введенных в элемент form на веб-странице, для чего бывает необходимо знать код JavaScript, связанный с этим символом.
Нажмите любую клавишу в поле ввода, расположенном ниже, чтобы увидеть, соответствующий этой клавише, код JavaScript. Или прокрутите вниз для просмотра полного списка.
| Клавиша | Код |
|---|---|
| backspace | 8 |
| tab | 9 |
| enter | 13 |
| shift | 16 |
| ctrl | 17 |
| alt | 18 |
| pause/break | 19 |
| caps lock | 20 |
| escape | 27 |
| spacebar | 32 |
| page up | 33 |
| page down | 34 |
| end | 35 |
| home | 36 |
| left arrow | 37 |
| up arrow | 38 |
| right arrow | 39 |
| down arrow | 40 |
| insert | 45 |
| delete | 46 |
| 0 | 48 |
| 1 | 49 |
| 2 | 50 |
| 3 | 51 |
| 4 | 52 |
| 5 | 53 |
| 6 | 54 |
| 7 | 55 |
| 8 | 56 |
| 9 | 57 |
| a/ф | 65 |
| b/и | 66 |
| c/с | 67 |
| Клавиша | Код |
|---|---|
| d/в | 68 |
| e/у | 69 |
| f/а | 70 |
| g/п | 71 |
| h/р | 72 |
| i/ш | 73 |
| j/о | 74 |
| k/л | 75 |
| l/д | 76 |
| m/ь | 77 |
| n/т | 78 |
| o/щ | 79 |
| p/з | 80 |
| q/й | 81 |
| r/к | 82 |
| s/ы | 83 |
| t/е | 84 |
| u/г | 85 |
| v/м | 86 |
| w/ц | 87 |
| x/ч | 88 |
| y/н | 89 |
| z/я | 90 |
| left window | 91 |
| right window | 92 |
| select | 93 |
| numpad 0 | 96 |
| numpad 1 | 97 |
| numpad 2 | 98 |
| numpad 3 | 99 |
| numpad 4 | 100 |
| numpad 5 | 101 |
| numpad 6 | 102 |
| Клавиша | Код |
|---|---|
| numpad 7 | 103 |
| numpad 8 | 104 |
| numpad 9 | 105 |
| multiply | 106 |
| add | 107 |
| subtrack | 109 |
| decimal point | 110 |
| divide | 111 |
| f1 | 112 |
| f2 | 113 |
| f3 | 114 |
| f4 | 115 |
| f5 | 116 |
| f6 | 117 |
| f7 | 118 |
| f8 | 119 |
| f9 | 120 |
| f10 | 121 |
| f11 | 122 |
| f12 | 123 |
| num lock | 144 |
| scroll lock | 145 |
| semi-colon | 186 |
| equal sign | 187 |
| comma | 188 |
| dash | 189 |
| period | 190 |
| forward slash | 191 |
| grave accent | 192 |
| open bracket | 219 |
| back slash | 220 |
| close bracket | 221 |
| single quote | 222 |
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru
Курсы javascript
megapup,
JavaScript не зависит от кодировки страницы, он оперирует всегда с Unicode (что есть не кодировка, а таблица символов). Если вы сделаете alert(‘н’) и увидите на экране действительно букву н, тогда и код у неё будет правильный.
08.11.2010, 12:19
Регистрация: 23.03.2009
Сообщений: 41
Aetae, не работает, выдает %u043F%u256B
Kolyaj, и что из этого следует? как получить верный код?
08.11.2010, 12:26
Новичок на форуме
Регистрация: 19.02.2008
Сообщений: 9,177
Из этого следует, что вопросами кодировок занимается браузер, а не JavaScript, и пытаться решить проблему с кодировками на JavaScript бесполезно. Или отдавайте правильные заголовки, чтобы браузер понимал, в какой кодировке ваш скрипт, или пишите исходники только с латинскими символами.
08.11.2010, 12:35
Регистрация: 23.03.2009
Сообщений: 41
ну я ведь знаю в какой кодировке скрипт
08.11.2010, 12:38
Новичок на форуме
Регистрация: 19.02.2008
Сообщений: 9,177
Важно, знает ли об этом браузер. Поэтому не забывайте сообщать ему об этом в HTTP-заголовках.
Важное замечание: IE6 не умеет использовать на одной странице ресурсы в разных кодировках. Поэтому если у вас страница в кодировке X, то и все внешние скрипты/стили должны быть также в кодировке X. Для остальных браузеров это не критично, главное в заголовках кодировку указывать.
js получить код символа
Для получения кода символа можно использовать метод charCodeAt() . Этот метод возвращает числовое значение Unicode для указанного символа в строке. Например, чтобы получить код символа ‘А’ (русская версия), мы можем написать следующий код:
const str = 'Александр Пушкин'; const code = str.charCodeAt(0); // код символа 'А' console.log(code); // выведет 1040
В этом примере мы создали константу str , содержащую строку «Александр Пушкин», и затем использовали метод charCodeAt() для получения кода символа ‘А’, который является первым символом в строке. Полученное числовое значение 1040 является кодом символа ‘А’ в кодировке Unicode.
Что касается термина Unicode, то это стандарт кодирования текста, который используется для представления символов и письменности всех языков мира. Каждому символу в Unicode сопоставлен свой уникальный код, который состоит из одного или нескольких битов. Этот код может быть использован для представления какого-то символа в виде числа в компьютере. Благодаря стандартной кодировке Unicode, символы из разных языков могут быть корректно отображены на любом компьютере или устройстве.