Перейти к содержимому

Как узнать код символа в js

  • автор:

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, символы из разных языков могут быть корректно отображены на любом компьютере или устройстве.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *