Здавалка
Главная | Обратная связь

Кодирование символьной информации в ЭВМ.

 

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

 

Таблица, в которой устанавливается однозначное соответствие между символами и их порядковыми номерами, называется таблицей кодировки.

Для разных типов ЭВМ используются различные таблицы кодировки. С распространением ПК типа IBM PC международным стандартом стала таблица кодировки под названием ASCII.

Американский национальный институт стандартов (American National Standards Institute, ANSI) принял американский стандартный код для обмена информацией (American Standard Cod for Information Interchange - ASCII), который приобрел очень большую популярность. В этом коде комбинации двоичных разрядов длиной 7 бит используются для представления строчных и прописных букв английского алфавита, знаков пунктуации, цифр от 0 до 9, а также кодов управления передачей информации (перевод строки, возврат каретки, табуляции и т.п.). Определим мощность алфавита, зная, что каждый символ несет 7 бит информации: N = 27 = 128, т.е. 7-ю битами можно закодировать 128 различных символов. Управляющие символы получили коды 0..31, 127. Символы, видимые на экране дисплея или на бумаге при печати, получили коды 32..126.

В наше время код ASCII часто употребляется в расширенном восьмиразрядном формате, который получается добавлением нуля в старший (7-ой) разряд байта. Но байт дает нам возможность закодировать 256 различных символов (N = 28 = 256)! Следовательно, при использовании 7-битовой кодировки остается незадействованной половина кодовой таблицы. Поэтому коды 128..255, получаемые добавлением 1 в старший разряд байта, были выделены для представления символов, не поддерживаемых исходной версией кода ASCII - так называемых национальных символов и алфавитов, а также для символов псевдографики. Естественно, эти коды отличаются для разных стран, отличаются они, к сожалению, и для разных операционных систем. Например, для кириллицы в операционной системе MS DOS довольно долгое время существовали 3 разные кодовые таблицы, пока не был принят единый стандарт – "альтернативная" кодировка (Code Page 866), в терминологии фирмы Microsoft – кодировка CP-866.

В рамках Windows появился новый стандарт кодирования символов – Windows ANSI, который тоже является однобайтовой схемой кодирования. Первые символы 0..127 соответствуют кодировке ASCII, вторая половина – опять национальные алфавиты. Соответственно для кириллицы тоже появилась другая кодировка Win – кодовая страница (Code Page 1251) – CP1251. Все Windows-приложения, работающие с русским языком, поддерживают эту кодировку.

Хронологически одним из первых стандартов кодирования русских букв на компьютерах был код КОИ-8 (код обмена информацией 8-битный). Эта кодировка (KOI-8r) применяется на компьютерах с операционной системой UNIX.

Фирма Apple разработала для компьютеров Macintosh свою собственную кодировку русских букв MAC. Международная организация по стандартизации (International Standard Organization – ISO) утвердила в качестве стандарта для русского языка кодировку под названием ISO 8859-5. В ISO – коде для выражения символов используется комбинация из 32-х бит, в результате чего этот код позволяет представлять более 17 миллионов символов.

В большинстве случаев пользователь не должен заботиться о перекодировке текстовых документов. При работе в приложениях Windows предусмотрена возможность автоматической перекодировки документов, созданных в приложениях MS-DOS. При работе в Интернет с использованием браузеров Internet Explorer и Netscape Communicator происходит автоматическая перекодировка Web-страниц.

А что делать тем, у кого, например, иероглифы? Как им работать с компьютером? Был придуман Unicode (юникод) – стандарт кодировки символов, имеющий фиксированную длину представления одного символа 16-ю битами (2 байта) и позволяющий закодировать все алфавиты в мире (6800 различных языков). (216 = 65536) Это – родной кодовый набор для Windows NT. Эту кодировку поддерживает платформа Microsoft Windows & Office 97. Стандарт Unicode определяет коды для знаков, применяемых во всех современных письменных языках. Это и латинский алфавит для английского языка, кириллический алфавит для русского и других славянских языков, греческий, иврит и арабский алфавиты, другие алфавиты, используемые в странах Европы, Африки, Индокитая и Азии. Самая большая часть этого стандарта посвящена тысячам объединенных знаков для китайских, японских и корейских иероглифов.

Unicode включает много наборов символов с кодами знаков пунктуации, математических и технических символов, стрелок и др. Всего Unicode обеспечивает коды более чем 29000 знаков мировых алфавитов, наборов иероглифов и символов. Кроме того содержит в резерве еще более чем 29000 кодов для расширения и отводит около 6000 кодов для частного применения, их могут использовать разработчики программного обеспечения и аппаратных средств для собственных знаков и символов.

Для более легкого внедрения Unicode в качестве всемирного знакового стандарта для кодирования текста в нем реализованы следующие принципы:

· используются фиксированные 16-битные коды для знаков и нет зависимости от состояний или способов кодировки специальных знаков;

· Unicode включает наборы знаков многих существующих стандартов: например, Latin-1 как свои первые 256 знаков, кроме того, он включает репертуар знаков других общих, национальных и международных стандартов;

· Unicode использует унификацию Хана для объединения китайских, корейских и японских иероглифов;

· Unicode допускает создание отмеченных знаков: он кодирует каждый знак и диакрит или метку гласного отдельно, а также позволяет объединять знаки, чтобы создать отмеченные.

До недавнего времени Unicode был одним из двух проектов международных стандартов кодировки наряду с другим, известным как ISO 10646. Соглашение между Консорциумом Unicode и Комитетом ISO 10646 произвело слияние двух проектов: Unicode теперь является собственным подмножеством набора знаков ISO 10646.

Основные коды стандарта Unicode составляют первые 65536 кодов стандарта ISO 10646 и содержат все знаки, в настоящее время определенные ISO 10646. Остальные коды ISO 10646 остаются незаполненными и зарезервированы для будущего расширения. Чтобы отразить знаки, имеющиеся в ISO 10646, стандарт Unicode включил более чем 3600 новых китайских, японских и корейских знаков и более чем 1000 других знаков.

Слияние стандартов Unicode и ISO 10646 зафиксировало только один развиваемый проект международного стандарта кодировок и остановило сражение между стандартами.


 

Таблица кодов символов ASCII (коды 0-127)
код символ HEX код символ HEX код символ HEX код символ HEX
0 NUL 01 SOH 12 STX 23 ETX 34 EOT 45 ENQ 56 ACK 67 BEL 78 BS 89 HT 910 LF A11 VT B12 FF C13 CR D14 SO E15 SI F16 DLE 1017 DC1 1118 DC2 1219 DC3 1320 DC4 1421 NAK 1522 SYN 1623 ETB 1724 CAN 1825 EM 1926 SUB 1A27 ESC 1B28 FS 1C29 GS 1D30 RS 1E31 US 1F 32 SP 2033 ! 2134 " 2235 # 2336 $ 2437 % 2538 & 2639 ' 2740 ( 2841 ) 2942 * 2A43 + 2B44 , 2C45 - 2D46 . 2E47 / 2F48 0 3049 1 3150 2 3251 3 3352 4 3453 5 3554 6 3655 7 3756 8 3857 9 3958 : 3A59 ; 3B60 < 3C61 = 3D62 > 3E63 ? 3F 64 @ 4065 A 4166 B 4267 C 4368 D 4469 E 4570 F 4671 G 4772 H 4873 I 4974 J 4A75 K 4B76 L 4C77 M 4D78 N 4E79 0 4F80 P 5081 Q 5182 R 5283 s 5384 T 5485 U 5586 V 5687 W 5788 X 5889 Y 5990 Z 5A91 [ 5B92 \ 5C93 ] 5D94 ^ 5E95 _ 5F 96 ` 6097 a 6198 b 6299 c 63100 d 64101 e 65102 f 66103 g 67104 h 68105 i 69106 j 6A107 k 6B108 l 6C109 m 6D110 n 6E111 o 6F112 p 70113 q 71114 r 72115 s 73116 t 74117 u 75118 v 76119 w 77120 x 78121 y 79122 z 7A123 { 7B124 | 7C125 } 7D126 ~ 7E127 DEL 7F

Символы с кодами 0-31 относятся к служебным. Они представляют собой команды, вывод которых на стандартное выходное устройство приводит к выполнению определённых действий. Вот назначение некоторых из них:

NUL - Null char. SOH - Start of Header STX - Start of Text ETX - End of Text EOT - End of Transmission ENQ - Enquiry ACK - Acknowledgment BEL - Bell BS - Backspace HT - Horizontal Tab LF - Line Feed VT - Vertical Tab FF - Form Feed CR - Carriage Return DLE - Data Link Escape DC1 (XON) - Device Control 1 DC2 - Device Control 2 DC3 (XOFF) - Device Control 3 DC4 - Device Control 4 NAK - Negative Acknowledgement SYN - Synchronous Idle ETB - End of Trans. Block CAN - Cancel ESC - Escape FS - File Separator RS - Request to Send SP - Space

 


 

Для кодирования символов национальных алфавитов используется расширение кодовой таблицы ASCII, то есть 8-ми разрядные коды от 128 до 255. В языках использующих кириллический алфавит, в том числе русском, пришлось полностью менять вторую половину таблицы ASCII, приспосабливая ее под кириллический алфавит. Но отсутствие согласованных стандартов привело к появлению различных кодовых таблиц для кодирования русскоязычных текстов, среди которых
  • альтернативная кодовая таблица CP-866
  • международный стандарт ISO 8859
  • кодовая таблица фирмы Microsoft CP-1251 (кодировка Windows)
  • кодовая таблица, применяемая в ОС Unix KOI 8-r
Кодовая таблица Windows (CP-1251)

 

 
Альтернативная кодовая таблица
Сравните: в альтернативной кодтровке русский прописной символ А имеет код 128, а в кодировке Windows - 192.

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.