1.7. Кодирование текстовых данных

предыдущая       следующая

Если каждому символу алфавита поставить в соответствие определенное целое число, (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию. По формуле N = 2i можно определить, что восьми двоичных разрядов достаточно для кодирования 256 различных символов.

       N = 2i = 28 = 256.

Этого хватит, чтобы выразить различными комбинациями восьми битов все символы английского и русского языков, как строчные, так и прописные, а также знаки препинания, символы основных арифметических действий и некоторые общепринятые специальные символы, например, символы §, №, $, @ и другие.

Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от О до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертаниям, а компьютер — по их кодам.

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

Важно, что присвоение символу конкретного кода — это вопрос соглашения, которое фиксируется в кодовой таблице.

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

Для английского языка, захватившего де-факто нишу международного средства общения, противоречия уже сняты. Институт стандартизации США (ANSI — American National Standard Institute) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange — стандартный код информационного обмена США). В системе ASCII закреплены две таблицы кодирования — базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

Таблица 1.1. Базовая таблица кодировки ASCII
32 пробел 48 0 64 @ 80 Р 96 * 112 p
33 ! 49 1 65 А 81 Q 97 а 113 q
34 50 2 66 В 82 R 98 b 114 r
35 # 51 3 67 С 83 S 99 с 115 s
36 $ 52 4 68 D 84 Т 100 d 116 t
37 % 53 5 69 Е 85 U 101 е 117 u
38 & 54 6 70 F 86 V 102 f 118 V
39 ¦ 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 Н 88 X 104 h 120 X
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 J 122 Z
43 + 59 ; 75 К 91 [ 107 k 123 {
44 , 60 < 76 L 92 \ 108 L 124 |
45 - 61 = 77 M 93 ] 109 m 125 }
46 . 62 > 78 N 94 ^ 110 n 126 ~
47 / 63 ? 79 О 95 _ 111 о 127  

Первые 32 кода базовой таблицы, начиная с нулевого, отданы производителям аппаратных средств (в первую очередь производителям компьютеров и печатающих устройств). В этой области размещаются так называемые управляющие коды, которым не соответствуют никакие символы языков, и, соответственно, эти коды не выводятся ни на экран, ни на устройства печати, но ими можно управлять тем, как производится вывод прочих данных. Начиная с кода 32 по код 127 размещены коды символов английского алфавита, знаков препинания, цифр, арифметических действий и некоторых вспомогательных символов. Базовая таблица кодировки ASCII приведена в таблице 1.1.
Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCII на уровень международного стандарта, и национальным системам кодирования пришлось «отступить» во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 по 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.

Так, например, кодировка символов русского языка, известная как кодировка Windows-1251, была введена «извне» — компанией Microsoft, но, учитывая широкое распространение операционных систем и других продуктов этой компании в России, она глубоко закрепилась и нашла широкое распространение. Эта кодировка используется на большинстве локальных компьютеров, работающих на платформе Windows.

Другая распространенная кодировка носит название КОИ-8 (код обмена информацией, восьмизначный) — ее происхождение относится ко временам действия Совета Экономической Взаимопомощи государств Восточной Европы. Сегодня кодировка КОИ-8 имеет широкое распространение в компьютерных сетях на территории России и в российском секторе Интернета.

Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название кодировки ISO (International Standard Organization — Международный институт стандартизации). На практике данная кодировка используется редко.

На компьютерах, работающих в операционных системах MS-DOS, могут действовать еще две кодировки (кодировка ГОСТ и кодировка ГОСТ-альтернативная). Первая из них считалась устаревшей даже в первые годы появления персональной вычислительной техники, но вторая используется и по сей день. В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных — это одна из распространенных задач информатики.

Во всех названных системах кодирования для каждого символа используется 1 байт или 8 бит. Идея создания единой системы кодирования, основанной на использовании 2 байтов для каждого символа долгое время сдерживалась недостаточностью возможностей вычислительной техники, ведь в этом случае все текстовые документы становятся в 2 раза длиннее. Со второй половины 90-х годов ресурсы технических средств позволили использовать для кодирования символов 16-разрядную систему кодирования UNICODE, позволяющую обеспечить уникальные коды для 65536 различных символов. Этого достаточно для размещения в одной таблице символов большинства языков планеты.

предыдущая       следующая