Что один человек закодировал, то другой завсегда раскодировать сможет. Сможет ли?
А. Алешин
Рассмотрим наиболее известные и важные виды кодировок, используемые в разных
операционных системах. Особое внимание уделим, конечно, кириллическим кодировкам, а именно
WIN1251, KOI7, KOI8R и др. Ранее, в разделе 7.1, мы познакомились со
стандартными английскими кодировками типа ASCII и новейшими универсальными кодировками Unicode.
Однако исторически появлению Unicode предшествовала целая серия кириллических кодировок, которые
и сейчас еще активно и часто используются в операционных системах и Интернет.
Кодировка KOI-7 (KOИ-7, Код Обмена Информацией, 7-ми битный) позволяет кодировать 27 = 128 символов, из которых 32 буквы русского алфавита, 26 букв латинского алфавита, 10 цифр и 26 печатаемых символа, пробел, специальные символы и непечатаемые символы. Коды непечатаемых символов находятся в диапазоне 00-20 (с ними можно ознакомиться в разделе 7.1, в таблице ASCII).
Замечательным правилом, действующим в этой кодировке является весовой
принцип кодирования латинских символов, для которого верно правило: Веса кодов букв
латинского алфавита увеличиваются на единицу в алфавитном порядке, то есть:
Пользуясь этим правилом, можно легко располагать слова в алфавитном порядке, поскольку эта операция сводится к простому сравнению двоичных чисел, соответствующих кодам символов. Для русских символов этот принцип несправедлив.
Каждый символ в кодировке KOI-7 представлен восьмиразрядным двоичным числом
(фактически, это один байт). Младшие 7 знакомест предназначены для кода самого символа, а самый
старший бит называется разрядом контроля четности и очень часто используется для
контроля ошибок, особенно при передаче данных. В этот разряд вписывают такое число (0 или 1),
чтобы сумма единиц, содержащихся в коде данного символа, было четным.
   Число    |    Символ    |    Число    |    Символ    |    Число    |    Символ    |    Число    |    Символ    |    Число    |    Символ    |    Число    |    Символ    |
---|---|---|---|---|---|---|---|---|---|---|---|
20 | пробел | 30 | 0 | 40 | @ | 50 | P | 60 | Ю | 70 | П |
21 | ! | 31 | 1 | 41 | A | 51 | Q | 61 | А | 71 | Я |
22 | " | 32 | 2 | 42 | B | 52 | R | 62 | Б | 72 | Р |
23 | # | 33 | 3 | 43 | C | 53 | S | 63 | С | 73 | С |
24 | $ | 34 | 4 | 44 | D | 54 | T | 64 | Д | 74 | Т |
25 | % | 35 | 5 | 45 | E | 55 | U | 65 | Е | 75 | У |
26 | & | 36 | 6 | 46 | F | 56 | V | 66 | Ф | 76 | Ж |
27 | ' | 37 | 7 | 47 | G | 57 | W | 67 | Г | 77 | В |
28 | ( | 38 | 8 | 48 | H | 58 | X | 68 | Х | 78 | Ь |
29 | ) | 39 | 9 | 49 | I | 59 | Y | 69 | И | 79 | Ы |
2A | * | 3A | : | 4A | J | 5A | Z | 6A | Й | 7A | З |
2B | + | 3B | ; | 4B | K | 5B | [ | 6B | К | 7B | Ш |
2C | , | 3C | < | 4C | L | 5C | \ | 6C | Л | 7C | Э |
2D | - | 3D | = | 4D | M | 5D | ] | 6D | М | 7D | Щ |
2E | . | 3E | > | 4E | N | 5E | ^ | 6E | Н | 7E | Ч |
2F | / | 3F | ? | 4F | O | 5F | Ъ | 6F | О | 7F | "забой" |
Кодировка KOI-8R (KOИ-8, Код Обмена Информацией, 8-ми битный) позволяет
кодировать 28 = 256 символов, в число которых входят 31 прописная и 32
строчных букв русского алфавита, 26 прописных и 26 строчных букв латинского алфавита, 10 цифр,
32 служебных знака и специальные символы, предназначенные для управления устройствами и передачи
данных. Коды в диапазоне 21-5F соответствуют одинаковым символам как для KOI-7, так и для
KOI-8R.
Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20 | пробел | 30 | 0 | 40 | @ | 50 | P | 60 | \ | 70 | p | С0 | ю | D0 | п | E0 | Ю | F0 | П |
21 | ! | 31 | 1 | 41 | A | 51 | Q | 61 | а | 71 | q | С1 | а | D1 | я | E1 | А | F1 | Я |
22 | " | 32 | 2 | 42 | B | 52 | R | 62 | b | 72 | r | С2 | б | D2 | р | E2 | Б | F2 | Р |
23 | # | 33 | 3 | 43 | C | 53 | S | 63 | c | 73 | s | С3 | ц | D3 | с | E3 | Ц | F3 | С |
24 | $ | 34 | 4 | 44 | D | 54 | T | 64 | d | 74 | t | С4 | д | D4 | т | E4 | Д | F4 | Т |
25 | % | 35 | 5 | 45 | E | 55 | U | 65 | e | 75 | u | С5 | е | D5 | у | E5 | Е | F5 | У |
26 | & | 36 | 6 | 46 | F | 56 | V | 66 | f | 76 | v | С6 | ф | D6 | ж | E6 | Ф | F6 | Ж |
27 | ' | 37 | 7 | 47 | G | 57 | W | 67 | g | 77 | w | С7 | г | D7 | в | E7 | Г | F7 | В |
28 | ( | 38 | 8 | 48 | H | 58 | X | 68 | h | 78 | x | С8 | х | D8 | ь | E8 | Х | F8 | Ь |
29 | ) | 39 | 9 | 49 | I | 59 | Y | 69 | i | 79 | y | С9 | и | D9 | ы | E9 | И | F9 | Ы |
2A | * | 3A | : | 4A | J | 5A | Z | 6A | j | 7A | z | СA | й | DA | з | EA | Й | FA | З |
2B | + | 3B | ; | 4B | K | 5B | [ | 6B | k | 7B | ( | СB | к | DB | ш | EB | Х | FB | Ш |
2C | , | 3C | < | 4C | L | 5C | \ | 6C | l | 7C | | | СС | л | DC | э | EC | Л | FC | Э |
2D | - | 3D | = | 4D | M | 5D | ] | 6D | m | 7D | ) | СD | м | DD | щ | ED | М | FD | Щ |
2E | . | 3E | > | 4E | N | 5E | ^ | 6E | n | 7E | - | СE | н | DE | ч | EE | Н | FE | Ч |
2F | / | 3F | ? | 4F | O | 5F | Ъ | 6F | o | 7F | "забой" | CF | о | DF | ъ | EF | О | FF | "забой" |
Кодировка Win1251 (CP1251, Code Page 1251, кодовая страница) сейчас является
одной из наиболее распространенных в сети Интернет и персональных компьютерах (на которых
установлена операционная система Windows. Все Windows приложения должны понимать эту кодировку
без перевода.
Кодировка CP866 (Code Page 866, кодовая страница) в настоящее время можно
назвать реликтом, поскольку ее используют компьютеры, работающие под операционной системой MS
DOS и OS/2. Её же использует сеть ФИДО.
Восьмибитное семейство кодировок 8859, созданное International Standorts
Organization, ISO, для наведения порядка в восьмибитных кодировках, расширило таблицу ASCII для
латинских букв с диакритикой и лигатур (кодировка ISO 8859-1), славянских языков с латинским
алфавитом, например, чешский, польский, венгерский, (ISO 8859-2), турецкого, мальтийского,
эсперанто, галисийского языков (ISO 8859-3), кириллицы (ISO 8859-5), арабского (ISO 8859-6),
греческого (ISO 8859-7), иврита (ISO 8859-8) и других языков. Кириллическая кодировка этого
семейства не получила широкого распространения, зато стандарт ISO 8859-1 (так называемая
Latin-1) стала стандартом для "расширенной" латиницы и содержит практически все символы
западноевропейских языков. Так, многие шрифты для Windows соответствуют кодировке ISO 8859-1
начиная с позиции 160 до конца таблицы, а в диапазоне 128-159 содержат дополнительные символы
(длинное тире или "торговая марка", например). Именно в этом семействе появилось понятие
"кодовая страница" (набор из 256 символов для каждого определённого языка или группы
языков). Крупным недостатком такого подхода является невозможность смешивания языков в одном
документе и отсутствие представления для китайского и японского языков.