Представление текстовой информации. Кодировки.

Кодировка
правило, задающее однозначное сопоставление конечного множества символов алфавита (обычно элементов текста: букв, цифр, знаков препинания) и последовательностей длиной в один или несколько символов другого алфавита (точек и тире в коде Mорзе, сигнальных флагов на флоте, нулей и единиц (битов) в компьютере).
Кодировка ASCII
0 1 2 3 4 5 6 7 8 9 a b c d e f
0
1
2 ! " # $ % & ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { } ~

Национальные восьмибитные кодировки

  • CP866 – широко использовалась в MS-DOS
  • KOI8-R – широко использовалась в Unix-подобных ОС (Linux, BSD)
  • CP1251 – широко использовалась (и отчасти используется до сих пор) ОС семейства Windows.
Кодировка CP866
0 1 2 3 4 5 6 7 8 9 A B C D E F
8 А Б В Г Д Е Ж З И Й К Л М Н О П
9 Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
A а б в г д е ж з и й к л м н о п
B
C
D
E р с т у ф х ц ч ш щ ъ ы ь э ю я
F Ё ё Є є Ї ї Ў ў ° · ¤
Кодировка KOI8-R
0 1 2 3 4 5 6 7 8 9 A B C D E F
8
9 ° ² · ÷
A ё
B Ё ©
C ю а б ц д е ф г х и й к л м н о
D п я р с т у ж в ь ы з ш э щ ч ъ
E Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
F П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч Ъ
Кодировка CP1251
0 1 2 3 4 5 6 7 8 9 A B C D E F
8 Ђ Ѓ ѓ Љ Њ Ќ Ћ Џ
9 ђ љ њ ќ ћ џ
A Ў ў Ј ¤ Ґ ¦ § Ё © Є « ¬ ­ ® Ї
B ° ± І і ґ µ · ё є » ј Ѕ ѕ ї
C А Б В Г Д Е Ж З И Й К Л М Н О П
D Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
E а б в г д е ж з и й к л м н о п
F р с т у ф х ц ч ш щ ъ ы ь э ю я

Кодировки UCS

  • UTF-32
  • UTF-16
  • UTF-8

UTF-8

  1. Если кодируется ASCII-символ, то старший бит устанавливается в 0, а остальные 7 бит представляют код ASCII-символа.
  2. Иначе, первые 8 бит содержат n единиц, где n – количество байт в кодируемом символе (то есть, минимум 2 единицы), за которыми следует 0. Остальные биты представляют часть кода символа.
  3. Следующие блоки по 8 бит начинаются на 10 (старший бит установлен в 1, следующий – в 0), а остальные биты представляют часть кода символа.
  • Максимальная длина кода символа в UTF-8 – 6 байт. Минимальная – 1 байт.

Пример:

(1 байт)  0aaa aaaa
(2 байта) 110x xxxx 10xx xxxx
(3 байта) 1110 xxxx 10xx xxxx 10xx xxxx
(4 байта) 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
(5 байт)  1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
(6 байт)  1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
UCS Символ Код UTF-8
007316 Латинская s 7316
041A16 Киррилическая К D09A16
090416 Индийская ऄ (“А”) E0A48416
9DDF16 鷟 (“феникс”) E9B79F16
1033016 Готическая 𐌰 (“Ахса”) F0908CB016
1F60416 Смайлик 😄 F09F988416

UTF-16

  1. Если слово не начинается на 110112, то это код из одного слова
  2. Иначе, это код из двух слов, причем первое слово начинается на 1101102, а второе – 1101112.
  3. Остальные биты – значащие. В случае кода из двух слов, к значащим битам прибавляется 1000016 для получения кода.
  • Диапазон UCS-кодов D80016..DFFF16 для кодирования суррогатных пар — символов, которые кодируются двумя 16-битными словами.
  • UCS-коды до FFFF16 кодируются двумя байтами, UCS-коды начиная с 1000016 – четырьмя.

Примеры:

UCS Символ Код UTF-16
007316 Латинская s 007316
041A16 Киррилическая К 041A16
090416 Индийская ऄ (“А”) 090416
9DDF16 鷟 (“феникс”) 9DDF16
1033016 Готическая 𐌰 (“Ахса”) D800DF3016
1F60416 Смайлик 😄 D83DDE0416