Категории
Самые читаемые
onlinekniga.com » Документальные книги » Публицистика » "Проблема кодировок": стечение обстоятельств или стратегический замысел? - Павел Кармышев

"Проблема кодировок": стечение обстоятельств или стратегический замысел? - Павел Кармышев

Читать онлайн "Проблема кодировок": стечение обстоятельств или стратегический замысел? - Павел Кармышев

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 2 3 4 5 6 7 8 9
Перейти на страницу:

Совершенно очевидно, что определённая в ISO 8859-X схема заведомо неприемлема, так как в ней символы разных языков обозначаются одними и теми же двоичными последовательностями, и определить, какую именно таблицу символов использовать для их прочтения – ISO 8859-1 или же, например, ISO 8859-5, – невозможно, если не знать этого заранее.

Однако это – только половина проблемы. Дело в том, что американские корпорации не соблюдали стандарты ISO серии 8859-X. В «национальных» версиях своего программного обеспечения они использовали расширенную до 8 бит систему кодирования ASCII и таблицы символов, содержащие 256 позиций; первые 128 символов в которых соответствовали стандартной 128-символьной таблице 7-битной системы ASCII (то есть вновь английский язык не затронут), а расположение символов национальных языков во второй половине таблицы не соответствовало расположению, определённому ISO в стандартах серии 8859-X[5].

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

Возьмём в качестве примера многострадальный русский язык. Для кодирования больших и малых букв русского алфавита используются следующие несовместимые или не полностью совместимые между собой таблицы (и это не полный список; см. http://czyborra.com/charsets/ http://czyborra.com/charsets/cyrillic.html#Unicode):

– ISO использует таблицу «Cyrillic», описанную в стандарте ISO 8859-5;

– корпорации IBM и Microsoft в своих ОС PC DOS и MS DOS использует таблицу CP866. CP866 – это один из представителей целой серии таблиц, используемых для «поддержки национальных языков» различными производителями DOS (CP437, CP850, CP852 и т.д., вплоть до CP874. Интересно, что ISO 8859-5 в этом наборе есть и упоминается как CP915). Очевидно, эта серия таблиц была составлена разработчиками и региональными продавцами компьютерной техники (Microsoft называет её «OEM charsets»), но из приведённых в документации ОС PC DOS 2000 ( (tm) of IBM Corp. ) данных ясно, что она как-то между прочим и фактически тайком была стандартизирована ISO – в документе ISO 9241-3, описывающем параметры мониторов[6] – «в дополнение» к уже определённой ранее серии стандартов 8859-X;

– корпорация Apple в русскоязычной версии своей ОС Mac OS использует свою таблицу X-Mac-Cyrillic;

корпорация Microsoft в своих ОС Windows 3.X и Windows 9X использует таблицу CP-1251. CP-1251 – это также представитель целой серии таблиц (CP-125X, где X – от 0 до 8), использованных Microsoft в различных «национальных» версиях Windows. При этом в документации к Windows 3.X Microsoft называет их «ANSI charsets», и вполне возможно, что они действительно были где-то и когда-то стандартизированы ANSI;

– советский (теперь – русский) национальный стандартизирующий орган ГОСТ определяет таблицу КОИ-8 (ГОСТ 19768-74; в этом стандарте определяется также 128-символьная таблица КОИ-7), затем – таблицу, известную как «основная кодировка ГОСТ» (ГОСТ 19768-87). (Впоследствии, правда, ГОСТ принял «альтернативную кодировку», таблица которой соответствовала, за малым исключением, таблице CP866 – только было уже поздно).

***

На практике в аппаратном обеспечении компьютерных систем[7] и в ОС для работы с текстами на разных языках использовались и по сей день используются 8-битная система кодирования символов вкупе с вышеописанными различными таблицами символов, объёмом в 256 позиций каждая. Однако американские компьютерные корпорации IBM и Xerox ещё в первой половине 1980-х начали работу над созданием новой «многоязычной» системы кодирования, в которой для представления символов используются двоичные последовательности длиною в 16 бит, а также единая большая таблица символов объёмом в 65536 позиций.

Впоследствии к этим корпорациям присоединились другие, и был начат проект, названный представителями американской компьютерной индустрии «Unification Code», или Unicode. Причём, дошло до того, что в 1991-м году эти корпорации (в их числе также Adobe, Microsoft и др.) для продвижения Unicode в качестве международного стандарта создали одноимённый транснациональный консорциум[8].

Главной задачей Unicode официально было объявлено сведение существующих в мире символов естественных языков в указанную большую таблицу и обеспечение одновременной и «равноправной» работы с ними. То есть, очевидно, когда количество недовольных «проблемой кодировок» пользователей превысило некоторую «критическую массу», указанные корпорации решили «обнародовать» систему Unicode и представить её как решение данной проблемы, делая намучившимся операторам ПК заманчивое, на первый взгляд, предложение – покупать поддерживающее её ПО.

Однако на самом деле и система Unicode является не окончательным решением проблемы кодирования символов, а лишь паллиативом. Дело в том, что метод кодирования, используемый в оригинальной версии Unicode, не предусматривал использования управляющих последовательностей для переключения между «базовой» и возможными «дополнительными» таблицами символов (как в ISO 646), поэтому максимальное количество символов, которые можно было представить, пользуясь Unicode, равнялось объёму одной-единственной («базовой») таблицы символов, используемой в этой системе – 65536.

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

Таблица символов, используемая в Unicode, устроена следующим образом. Она разбита на 256 рядов. Первые ряды содержат некоторые из старых таблиц символов (объёмом в 128 или 256 позиций каждая) , определённых для некоторых языков. Самый первый ряд (под номером 0) представляет из себя таблицу ISO 8859-1 (в свою очередь, она содержит 128 символов из таблицы 7-битной системы ASCII, а также некоторые символы, используемые в языках стран Западной Европы).

Последующие ряды таблицы отведены под некоторые новые символы (например, математические), но преимущественно – под иероглифы. Однако поскольку используемой в Unicode таблицы объёмом в 65536 символов заведомо недостаточно для представления всех иероглифов, используемых в китайском, японском и корейском языках – хотя официально корпорации-разработчики Unicode заявляют об их поддержке как об одной из главных положительных черт своей системы, – иероглифы, которые, по мнению корпораций, «похожи» друг на друга, было решено «унифицировать» – то есть оставить только такое их начертание, которое принято в китайском языке.

В общей сложности в таблице символов системы Unicode (на данный момент, то есть в версии 3.0 – см. ниже) насчитывается около 28000 иероглифов. Как видно, многие иероглифы – в частности те, что в Японии используются для написания имён людей, названий местностей, а также в исторических текстах – вообще были оставлены «за бортом». При этом «похожие» и действительно одинаковые символы европейских языков, например, букв «A», «унификации» подвергнуты не были, поэтому в то же самое время масса места в таблице символов Unicode используется, по сути, впустую.

Как следствие, жители стран Юго-Восточной Азии, за которых американские корпорации пытаются решить, какие символы им «разрешается» использовать в компьютерной технике, а какие – «запрещается», уже в течение нескольких лет борются с системой Unicode. Она совершенно не соответствует самым первоочерёдным требованиям, предъявляемым к ней в этих странах, – вопреки рекламным заявлениям корпораций-членов консорциума.

***

Уместно рассмотреть теперь, какие агрессивные шаги предпринимают корпорации для утверждения Unicode в качестве международного стандарта.

В начале 1990-х в ISO для решения проблемы кодировок рассматривалась другая, более совершенная чем Unicode, система кодирования символов – UCS (Universal Coded Character Set). Объём её таблицы символов составляет примерно 4,3 миллиарда символов (а точнее, 2^32=4294967296). Эта таблица разбита на 65536 «внутренних» таблиц по 65536 символов каждая, и разбивка этих «внутренних» таблиц (256x256 рядов) совпадает с разбивкой таблицы, используемой в системе Unicode. Для переключения между «внутренними» таблица ми в UCS предлагалось использовать управляющие последовательности.

Система UCS была описана в «черновике» ISO DIS-10646.1:1990, подготовленном ISO/IEC JTC1/SC02/WG02. Её поддержали европейские и японские исследователи. Однако американские корпорации UCS не устраивала. А поскольку ISO, как она сама указывает в своих документах, «выпускает только те стандарты, которые нужны рынку», а также потому, что многие нанимаемые ISO «эксперты» – это работники американских компьютерных корпораций, то неудивительно, что вскоре черновик ISO DIS-10646.1:1990 тихо прекратил своё существование.

«Зато» появился – уже в качестве не черновика, а стандарта – документ ISO/IEC 10646 Version 2, позднее названный ISO/IEC 10646-1: 1993. Он был обозначен как «ISO/IEC 10646 Universal Multiple-Octet Coded Character Set (UCS) – Part 1: Architecture and Basic Multilingual Plane», и в качестве его базовой таблицы символов (т.е. первой из «внутренних» 65536-символьных таблиц) была утверждена… правильно, таблица системы Unicode, со всеми вытекающими отсюда последствиями.

1 2 3 4 5 6 7 8 9
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу "Проблема кодировок": стечение обстоятельств или стратегический замысел? - Павел Кармышев.
Комментарии