Последующие ряды таблицы отведены под некоторые новые символы (например, математические), но преимущественно – под иероглифы. Однако поскольку используемой в 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, со всеми вытекающими отсюда последствиями.
Заметим, что по мере изменения и пополнения таблицы символов системы Unicode и выхода новых версий этой системы – а эта работа ведётся постоянно, поскольку изначально система Unicode была представлена в ISO в недоработанном виде – выходят и новые документы ISO. Система Unicode существует в общей сложности в следующих версиях: 1.1 (соответствует стандарту ISO/IEC 10646-1: 1993), 2.0, 2.1 (тот же стандарт ISO/IEC 10646-1: 1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2), 3.0 (стандарт ISO/IEC 10646-1:2000). В начале 2002-го года планируется выход Unicode 3.2, а в 2003-м – Unicode 4.0.
Кстати, работа по «унификации» иероглифов для таблицы символов Unicode сейчас ведётся тоже не консорциумом Unicode, а ISO – специальным комитетом IRG при JTC1/SC02/WG02. И это при том, что в оригинальной версии UCS (в черновике ISO DIS-10646.1:1990) было чётко определено, что «базовая» (первая «внутренняя») таблица вообще не предназначена для иероглифов. При этом работа по «унификации» продолжается до сих пор, хотя в одной из более поздних версий системы Unicode было объявлено, что таблица символов будет расширена до примерно 1000000 позиций (с помощью использования специальных «расширений», которые в первоначальной версии Unicode не планировались – см. выше).
В дополнение к всему уже сказанному об Unicode нужно отметить ещё некоторые обстоятельства. Для того, чтобы сделать её хотя бы частично совместимой с ранее существовавшим ПО (а возможно, и чтобы не тратить денег на серьёзную переделку своего ПО, находящегося в стадии разработки), членами консорциума были разработаны различные методы представления (номеров) символов таблицы Unicode: UTF-8, UTF16, UTF16LE и UTF16BE. Отсюда возникает необходимость в реализации в ПО поддержки каждого из них, что определённо порождает новый виток путаницы. С этим обстоятельством связано, вероятно, большинство проблем, существующих в конкретных реализациях поддержки работы с системой кодирования Unicode в различном ПО.
Отметим, что консорциум Unicode держит «про запас» методы UTF32, UTF32LE, UTF32BE, в которых для кодирования (номера) каждого символа предусматривается использование уже 32-битных последовательностей (что, однако, «автоматически» не означает, что таблица символов будет расширена до 4,3 миллиардов позиций). Однако их применение чрезвычайно расточительно с точки зрения расходования системных ресурсов, и представители Unicode прямо указывают, что в ближайшее время промышленность (читай – корпорации-члены Unicode) не планирует переходить на применение этих методов.
У системы Unicode есть и другие нерешённые проблемы, наличие которых для международного стандарта просто неприлично, но мы не будем на них останавливаться отдельно. Интересующиеся могут ознакомиться с этой информацией на web-сайте проекта TRON[9].
Зададимся теперь вопросом: почему же всё-таки не возник единый международный стандарт, в таблице символов которого были бы последовательно занесены символы всех существующих естественных языков[10], притом одинаково удобный для применения во всех странах мира? Почему, напротив, в качестве международных принимались и принимаются заведомо несовершенные стандарты, часто недоработанные, и появилось большое количество несовместимых таблиц символов? Попробуем оценить основные причины.
1. корпорациям-производителям ПО, очевидно, весьма выгодно продавать разные «национальные» версии операционных систем, офисных пакетов и т.д. за отдельные деньги. Так, Microsoft продавала «американскую», «панъевропейскую», «восточно-азиатскую», « ближневосточную» и «тайскую» версии Windows 95, а IBM – стандартную, «арабскую», «израильскую», «японскую», «корейскую», «китайскую» и «тайваньскую» версии PC DOS. Отсюда возникновение несовместимых таблиц символов, содержащих 256 позиций каждая.
Кроме того, как уже говорилось, это, очевидно, позволило корпорациям в дальнейшем нажиться на продажах ПО, соответствующего стандарту Unicode – кому оно было бы нужно, не существуй «проблема кодировок»?! – а также на продаже самогО текста этого стандарта.
[10]
По данным японских учёных, символы всех известных языков мира, как используемых сейчас, так и ныне «мёртвых», можно уместить в таблицу символов, насчитывающую 2^24 = 16777216 позиций.