JavaScript: Кодировка
На самом глубоком уровне компьютер оперирует исключительно цифрами 0
и 1
. Это так называемый двоичный код, а единички и нули называются битами, от "binary digit" — «двоичная цифра».
Обычные, привычные нам числа в десятичной системе счисления, закодированы с помощью двоичных чисел:
- 0 ← 0
- 1 ← 1
- 2 ← 10
- 3 ← 11
- 4 ← 100
- 5 ← 101
Но как быть с текстом? Компьютер на самом деле не знает ничего о буквах, знаках пунктуации и прочих текстовых символах. Все эти символы также закодированы числами.
Можно взять английский алфавит и дать каждой букве число, начиная с единицы по порядку:
- a ← 1
- b ← 2
- c ← 3
- d ← 4
- ...
- z ← 26
Далее можно научить компьютер понимать эту таблицу и переводить текст в числа и наоборот — числа в текст:
hello
→8
5
12
12
15
7
15
15
4
→good
Подобные таблицы, в которых сопоставляются буквы и числа, называются кодировками. Кроме букв алфавита, в таблицы кодировок входят знаки препинания и другие полезные символы. Вы наверняка сталкивались с кодировками, например, ASCII или UTF-8.
Разные кодировки содержат различное количество символов. Изначально небольших таблиц вроде ASCII было достаточно для большинства задач. Но в ней есть только латинские буквы, несколько простых символов вроде %
и ?
и специальные управляющие символы типа перевода строки.
С распространением компьютеров, разным странам понадобились свои, более широкие таблицы. В том числе для кириллических букв, иероглифов, арабской вязи, дополнительных математических и типографских символов, а впоследствии — даже для эмодзи-смайликов.
Сегодня в большинстве случаев используется один из вариантов юникода — utf-8. Он включает в себя знаки почти всех письменных языков мира. Благодаря этому, письмо, сформированное человеком в Китае на китайском, без проблем можно открыть и увидеть в первозданном виде на компьютере в Финляндии (поймет он его или нет, это уже другой вопрос).
С кодированием текста и кодировками программисты встречаются в своей жизни регулярно. Поддержка юникода у разных языков программирования выполнена на разном уровне. Кроме того, кодировки нужно явно указывать при работе и с базами данных, и с файлами.
Задание
В JavaScript можно «запросить» и вывести на экран любой символ из кодировки ASCII. Например:
console.log(String.fromCharCode(63));
На экран выведется символ с номером 63 — вопросительный знак ?
. Таким способом можно выводить любой символ.
Найдите в интернете таблицу кодов ASCII. Можно использовать запросы типа "ascii codes table" или «коды ascii». Обычно в таких таблицах коды указаны сразу в нескольких системах счисления: десятичной, двоичной, восьмеричной и шестнадцатеричной. Нас интересует десятичный код (dec или decimal).
Используя пример выше и найденную таблицу, выведите на экран символы ~
, ^
и %
(каждый на своей собственной строке).
(Конечно, можно «обмануть» тесты и просто сделать что-то типа console.log('~')
, но так будет совсем неинтересно :)
Определения
Кодировка - набор символов, закодированных с помощью чисел для представления текста в электронном виде.