Кодирование текста: различия между версиями

иллюстрация, источники, запрос источника, к удалению, ответ, орфография, оформление, викификация
м (Откат правок 46.175.25.5 (обс.) к версии Rschen7754)
Метка: откат
(иллюстрация, источники, запрос источника, к удалению, ответ, орфография, оформление, викификация)
Метки: blanking замена
ХУЙЙЙЙЙ
Для кодирования букв и других символов, используемых в печатных документах, необходимо закрепить за каждым символом числовой номер – код.
 
В англоязычных странах используются 26 прописных и 26 строчных букв (A … Z, a … z), 9 знаков препинания (. , : ! " ; ? ( ) ), пробел, 10 цифр, 5 знаков арифметических действий (+,-,*, /, ^) и специальные символы (№, %, _, #, $, &, >, <, |, \) – всего чуть больше 100 символов. Таким образом, для кодирования этих символов можно ограничиться максимальным 7-разрядным двоичным числом (от 0 до 1111111, в десятичной системе счисления – от 0 до 127).
 
Первой такой 7-разрядной кодовой таблицей была ASCII (American Standard Code for Information Interchange), опубликованная как стандарт в 1963 г. американской организацией по стандартизации American Standards Association (ASA), которая позднее стала именоваться ANSI (American National Standards Institute, http://www.ansi.org/, поэтому данную кодовую таблицу называют также и ANSI). Таблица содержала 32 кода команд или управляющих символов (от 0 до 31), большая часть которых сегодня не используется, и 95 кодов (от 33 до 127) для различных знаков, достаточных для работы с английскими текстами, как показано на рисунке 1.1. На рисунке 1.1 символы построчно имеют следующие коды в шестнадцатеричной системе счисления (в скобках – в десятичной):
*1-я строка с 00 по F и далее с 10 по 1F (0 – 15, 16 - 31),
*2-я строка с 20 по 2F и 30 – 3F (32 – 47, 48 - 63),
*3-я строка с 40 по 4F и 50 – 5F (64 – 79, 80 -95),
*4-я строка с 60 по 6F и 70 – 7F (96 – 111, 112 -127).
[[Файл:image002.gif]]<br />
В данной таблице для преобразования прописных букв в строчные достаточно к коду букву прибавить 32 и наоборот для преобразования строчных в прописные.
В последующем данная таблица ASCII была принята как стандарт ведущими международными организациями по стандартизации:
*ISO/IEC 646:1991 (ISO – http://www.iso.org/ – International Organization for Standardization и IEC – http://www.iec.ch/ – International Electrotechnical Commission – ведущие международные организации по стандартизации, в области электротехники – совместные стандарты),
*ITU-T Recommendation T.50 (09/92) (The International Telecommunication Union – http://www.itu.int/),
*ECMA-6 (European Computer Manufacturers Association).
 
Однако для нашей страны и многих других стран необходимо было добавить в кодовую таблицу символы национальных алфавитов. Для этого было предложено использовать 8-битную кодовую таблицу, которая могла содержать дополнительно ещё 128 символов (с 128 по 255).
 
В дальнейшем был принят стандарт на 8-битную таблицу ASCII – ISO/IEC 8859, в которой первые 128 символов оставались те же, что и в 7-битной таблице, а символы с 128 по 255 отводились для неанглийских символов.
Существует несколько частей этого стандарта:
*ISO/IEC 8859-1:1998 -- Part 1:Latin alphabet No. 1,
*ISO/IEC 8859-5:1999 -- Part 5: Latin/Cyrillic alphabet,
*ISO/IEC 8859-6:1999 -- Part 6: Latin/Arabic alphabet,
*ISO/IEC 8859-7:2003 -- Part 7: Latin/Greek alphabet,
*ISO/IEC 8859-8:1999 -- Part 8: Latin/Hebrew alphabet и т.д.
На рисунке 1.2 представлена вторая половина кодовой таблицы (коды 128-255) для стандарта ISO 8859-5.
[[Файл:image003.png]]<br />
Рисунок 1.2. Кодовая таблица ISO 8859-5(коды с 12810 по 25510)<br />
Первые русские ЭВМ использовали 7-битную кодировку символов КОИ-7 (Код Обмена Информацией семибитный – рисунок 1.3), в которой присутствовали прописные латинские буквы, а на месте строчных латинских были русские прописные буквы (кириллица).<br />
[[Файл:image005.png]]<br />
Рисунок 1.3. Таблица символов КОИ-7<br />
Позднее на первых отечественных персональных компьютерах использовалась так называемая «Основная кодировка ВЦ Академии Наук СССР», в руководствах к старым матричным принтерам обозначаемая просто как «ГОСТ» – 8-битная кодовая таблица, вторая половина которой содержала символы псевдографики, русские прописные и строчные буквы (коды с 128 по 255 – рисунок 1.4).
[[Файл:image007.png]]<br />
Рисунок 1.4. Кодировка символов «ГОСТ»<br />
В дальнейшем основной кодировкой русских букв для MS DOS стала "альтернативная кодировка ВЦ Академии Наук СССР" (вторая половина таблицы для кодов 128-255 приведена на рисунке 1.5). Содержит псевдографику (позволяющую в текстовом режиме рисовать рамки из одинарных и двойных линий). Существует несколько модификаций, отличающихся символами в последних 14 позициях. Зарегистрирована в IANA (Internet Assigned Numbers Authority – организация, отвечающая за административное управление в Internet) как IBM866 или CP866.
[[Файл:image009.png]]<br />
Рисунок 1.5. Таблица символов DOS Cyrillic (CP866)<br />
С широким распространением операционной системы Microsoft Windows и появлением её национальных локализаций для второй половины таблицы ASCII было введено понятие «кодовая страница» (code page, CP). Несколько наиболее важных кодировок показаны в таблице 1.1.
 
Таблица 1.1. Некоторые национальные кодовые страницы (CP) операционной системы Microsoft Windows
{| border=1
|Локализация
|ANSI CP
|Mac CP
|DOS Primary CP(OEM)
|DOS Secondary CP(OEM)
|Другие CPs
|-
|English (United States)
|1252
|10000
|437
|850
|
|-
|English (Britain, Canada и др.)
|1252
|10000
|850
|437
|
|-
|French (Standard)
|1252
|10000
|850
|437
|
|-
|French (Canada)
|1252
|10000
|850
|863
|437
|-
|German (Standard)
|1252
|10000
|850
|437
|
|-
|Russian
|1251
|10007
|866
|855
|
|}
Кодировка русских букв в операционной системе Microsoft Windows – CP1251 – показана на рисунке 1.6.
[[Файл:image0011.png]]<br />
Рисунок 1.6. Таблица символов CP1251<br />
В операционной системе Linux для представления русских букв используется кодировка КОИ-8R (рисунок 1.7), зарегистрированная в IANA как KOI8-R (http://koi8.pp.ru/).
[[Файл:image013.png]]<br />
Рисунок 1.7. Таблица символов KOI8-R<br />
Стандартизован зарегистрирован также украинский клон КОИ-8 – KOI8-U (рисунок 1.8), имеющая отличия от KOI8-R во второй строке символов псевдографики.
[[Файл:image015.png]]<br />
Рисунок 1.8. Таблица символов KOI8-U<br />
Кириллица Macintosh (компьютеров фирмы Apple), она же CP10007, довольно близка к CP1251. Не зарегистрирована в IANA, но часто обозначается как x-mac-cyrillic (рисунок 1.9).
[[Файл:image017.png]]<br />
Рисунок 1.9. Macintosh Cyrillic, CP10007 (charset = x-mac-cyrillic)<br />
В 1991 году в Калифорнии была создана некоммерческая организация Unicode Consortium, в которую входят представители многих компьютерных фирм (Borland, IBM, Lotus, Microsoft, Novell, Sun, WordPerfect и др.), и которая занимается развитием и внедрением стандарта «The Unicode Standard».
Стандарт кодирования символов Unicode становится доминирующим в интернациональных программных многоязычных средах. Microsoft Windows NT и его потомки Windows 2000, 2003, XP используют Unicode, точнее UTF-16, как внутреннее представление текста. UNIX-подобные операционные системы типа Linux, BSD и Mac OS X приняли Unicode (UTF-8), как основное представления многоязычного текста.
Unicode резервируют 1114112 (220+216) символов кода, в настоящее время используются более 96000 символов. Первые 256 кодов символов точно соответствуют таковым ISO 8859-1, наиболее популярной 8-разрядной таблицы символов «западного мира»; в результате, первые 128 символов также идентичны таблице ASCII.
Кодовое пространство стандарта Unicode разделено на 17 планов («planes»), и каждый план имеет 65536 (= 216) точек кода. Первый план (план 0), Основной Многоязычный План (BMP - Basic Multilingual Plane) - тот, в котором описано большинство символов. BMP содержит символы почти для всех современных языков, и большое количество специальных символов.
Ещё два плана используются для «графических» символов. План 1, Дополнительный Многоязычный План (SMP - Supplementary Multilingual Plane ) главным образом используется для исторических символов, а также используется для музыкальных и математических символов. План 2, Supplementary Ideographic Plane (SIP), используется для приблизительно 40000 редких Китайских иероглифов. План 15 и План 16 открыт для любого частного использования.
На рисунке 1.10 показан русский блок Unicode (U+0400 to U+04FF).<br />
[[Файл:image019.gif]][[Файл:image020.gif]]<br />
Рисунок 1.10. Кириллица в Unicode<br />
В то же время, подобно двоичным файлам, кодировка Unicode мало подходит для непосредственной передачи по сети – байты в тексте вполне могут приходиться на область управляющих символов, поэтому обычно применяются две другие основанные на Unicode кодировки переменной длины, обозначаемые как UTF (Unicode Transformation Format): 7-битная UTF-7 (последний пересмотр – RFC2152, 1997 г., зарегистрирована в IANA как UTF-7) и 8-битная UTF-8 (RFC2279, 1998 г., зарегистрирована в IANA как UTF-8). Обе они в каком-то смысле уже не являются языковыми кодировками, а являются программно распознаваемым кодом относительно исходного Unicode, но зарегистрированы они именно как кодировки, наравне с ISO 8859-5 или KOI8-R. Естественно, обе они не являются специфически «русскими», а пригодны для написания «сколько угодно»-язычного письма.
В UTF-8 все символы разделены на несколько групп по значению первых битов. Символы с кодами менее 128dec кодируются одним байтом, первый битом которого равен нулю, а последующие 7 бит в точности соответствуют 128 символам 7-й таблицы ASCII (см. таблицу 1.2), следующие 1920 символов – двумя байтами (Greek, Cyrillic, Coptic, Armenian, Hebrew и Arabic символы). Последующие символы кодируются тремя и четырьмя байтами.<br />
Таблица 1.2. Принцип кодирования символов в UTF-8
{| border=1
|Диапазон
|UTF-8
|Notes
|-
|кодов
|(binary)
|
|-
|(hexadecimal)
|
|
|-
|000000 - 00007F
|0xxxxxxx
|Первый бит 0, следующие 7 соотверствуют таблице ASCII
|-
|000080 - 0007FF
|110xxxxx 10xxxxxx
|Первые 3 бита 110 – всего используется 2 байта, второй байт начинается с 10
|-
|000800 - 00FFFF
|1110xxxx 10xxxxxx 10xxxxxx
|Первые 4 бита 1110 – всего используется 3 байта, второй и третий байты начинаются с 10
|-
|010000 - 10FFFF
|11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|Первые 5 бит 11110 – всего используется 4 байта, второй, третий и четвёртый байты начинаются с 10
|}
Особняком стоит 7-битная, русская кодировка - транслитерация, или транскириллица, когда русские буквы передаются похожими по звучанию английскими primerno takim obrazom.
В конце 1997 г. Microsoft подвергла ревизии свои кодовые таблицы и включила в них новый символ евровалюты "Евро", он помещен в позицию 128 (0x80) большинства таблиц и в позицию 136 (0x88) русской таблицы CP1251.
 
Таким образом, в настоящее время при работе в Интернете и с текстовыми файлами чаще всего Вы можете встретить следующие кодовые страницы русских букв предпочитаемые авторами -- пользователями операционных систем:
*Cyrillic (Windows) – CP1251 – Microsoft Windows;
*Cyrillic (DOS) – CP866 – MS-DOS (встречается крайне редко);
*Cyrillic (ISO) – ISO 8859-5 – 8-ми битная таблица ASCII;
*Cyrillic KOI8-R – используется среди ортодоксальных пользователей операционных систем Linux, по-прежнему не желающих переходить на unicode, и среди html-программистов "старой закалки";
*CP10007 – Mac OS (в настоящее время -- переход на unicode);
*UTF-8 – универсальная Unicode кодировка (используется в большинстве Linux и Windows 2008).
 
== Ссылки ==
 
* http://digteh.ru/proc/text.php Запись текстов двоичным кодом (Запись букв двоичным кодом)
 
[[Категория:Теория информации]]
[[Категория:Теория кодирования]]
13

правок