Кодировка

На самом глубоком уровне компьютер оперирует исключительно цифрами 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

Далее можно научить компьютер понимать эту таблицу и переводить текст в числа и наоборот — числа в текст:

  • hello8 5 12 12 15
  • 7 15 15 4good

В этом заключается суть кодировок.

Кроме букв алфавита, в таблицы кодировок входят знаки препинания и другие полезные символы. Вы наверняка сталкивались с кодировками, например, ASCII или UTF-8.

Разные кодировки содержат разное количество символов. Изначально небольших таблиц вроде ASCII было достаточно для большинства задач. Но в ней только латинские буквы, несколько простых символов вроде % и ? и специальные управляющие символы типа перевода строки.

С распространением компьютеров, разным странам понадобились свои, более широкие таблицы. В том числе для кириллических букв, восточных иероглифов, арабской вязи, дополнительных математических и типографских символов, а в последствии даже для эмоджи-смайликов.

Сегодня в большинстве случаев используется один из вариантов юникода, включающий в себя знаки почти всех письменных языков мира.

Задание

В PHP можно «запросить» и вывести на экран любой символ из кодировки ASCII. Например:

print_r(chr(63));

На экран выведется символ номер 63 — вопросительный знак ?. Таким способом можно выводить любой символ.

Найдите в интернете таблицу кодов ASCII. Можно использовать запросы типа “ascii codes table” или «коды ascii». Обычно в таких таблицах коды указаны сразу в нескольких системах счисления: десятичной, двоичной, восьмеричной и шестнадцатеричной. Нас интересует десятичный код (dec или decimal).

Используя пример выше и найденную таблицу, выведите на экран ~^&%.

(Конечно, можно «обмануть» тесты и просто сделать print_r('~^&%'), но так будет совсем не интересно :)


Определения
  • Кодировка — набор символов, закодированных с помощью чисел для представления текста в электронном виде.

Exercise available only for signed users