Юрий Ревич.

Полный CHARSET

Часть 1. Дата публикации: 23 Декабря 2002


Объективную реальность, которая нас окружает, мы воспринимаем преломленной через органы восприятия, которые воспроизводят в мозгу образы окружающего мира -- знаки. От того, как мозг интерпретирует эти знаки-образы, во многом зависит индивидуальное восприятие мира. Немаловажную роль в этом деле играют и собственно человеческие знаковые системы: речь, письменность, музыка, искусства...

Языков, устных и письменных, может существовать бесконечное множество -- никто не мешает любому сесть и изобрести свою собственную языковую систему, причем такую, что она будет по своим возможностям вполне адекватна любому (или почти любому) другому языку. Так возник эсперанто, изобретенный "с нуля" доктором Людвигом Заменхоффом (это самый известный из искусственных языков, но не единственный). Кавычки я поставил потому, что Заменхофф был европейцем, и естественно, что получился еще один язык романской группы из индоевропейской семьи, а не какой-нибудь тюркской или китайско-тибетской. Так что еще вопрос, насколько обоснованы претензии эсперантистов на присвоение этому языку звания "международного" -- эсперанто не намного более "международен", чем английский, к примеру.

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

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

Притом речь идет не только о кодировках кириллицы -- это просто крайний случай. История цифрового кодирования алфавита даже началась с нелепостей. Капитан французской армии Шарль Барбье в 1819 году попытался разработать систему "ночного письма", в котором выпуклыми точками и тире на бумаге кодировались не буквы, а, можете себе представить, -- звуки! Естественно, это было практически непригодная для французского языка вещь. Не слишком большим воображением обладал и основатель парижского Королевского института слепых Валентин Ойи -- он придумал систему рельефных букв, которые можно было читать, касаясь пальцами. Поэтому трудно переоценить гениальность ослепшего в возрасте трех лет Луи Брайля (Louis Braille, 1809-1852), который еще в мальчишеском возрасте придумал последовательную систему рельефных точек, кодирующих буквы алфавита, цифры и знаки препинания, которая, несколько дополненная, используется и в наши дни. Базовый элемент системы Брайля содержит 6 позиций-ячеек, каждая из которых может быть выпуклой или плоской -- то есть она является двоичной. Всего ней можно закодировать 26=64 символа, однако Брайлем предусмотрен механизм практически неограниченного расширения количества кодируемых символов -- для этого употребляются коды-переключатели (shift-коды). Наличие такого переключателя означает, что все последующие знаки надо читать определенным образом (например, как цифры, а не буквы), до тех пор, пока не встретится другой подобный знак. Другая разновидность переключающих кодов (escape-коды) действует только на один знак после такого кода, и тоже впервые введена в азбуке Брайля. Такие системы кодирования с переключением получили в дальнейшем широкое распространение в компьютерной технике -- возьмите хотя бы принцип устройства языка HTML.

Следующим этапом было возникновение азбуки Морзе -- 1838 год. Морзе был не первым, кто придумал двоичную кодировку алфавита в целях передачи текстовых сообщений по электрическим цепям -- еще до него это сделал русский немец барон Шиллинг, продемонстрировавший действующую конструкцию телеграфа в 1828 году, однако аппарат Морзе был устроен значительно проще и надежней, потому именно "морзянка" используется в телеграфии и по сей день. Следует отметить, что она не является двоичной кодировкой в полном смысле этого слова -- в ней, кроме точки (ноль) и тире (единица), как минимум необходимо использовать третий знак -- длинную паузу, как промежуток между отдельными буквами. Кроме того, азбука Морзе очень удобна для передачи комбинаций точек-тире-пауз последовательно, но совершенно непригодна для передачи одновременно целой буквы -- в т.н. параллельных кодах, когда код каждого символа обязан иметь фиксированное количество бит (например, по числу проводов в линии). В последнем случае различить, например, символы S, E и X не представляется возможным, так как все они состоят из разного количества одних только точек, и в параллельном двоичном коде будут одинаково представлены сплошными точками-нулями.

Самюэль Морзе (Samuel F. Morse, 1791-1872) не был дипломированным ученым или инженером -- к моменту своего первого знакомства с действием тока на магнитную стрелку в 1832 году (ему тогда уже перевалило за сорок) он успел стать известным художником, профессором живописи и даже президентом (первым по счету) национальной Академии художеств США. Вот ведь как бывает -- наверное, он искренне считал свои картины делом всей своей жизни, но кто их помнит сейчас? Зато "азбуку Морзе", несмотря на все успехи информационных технологий, до сих пор изучают во всех без исключения учебных заведениях, связанных со связью, как непревзойденное по надежности средство передачи сигналов на расстояние -- когда другие способы в условиях сильных помех отказывают, "морзянку" все равно можно спокойно принимать.

Предшественником современных компьютерных кодировок принято считать коды, разработанные еще в 1874 французом Эмилем Бодо (Emile Baudot), усовершенствованные позднее Дональдом Мюрреем и принятые в качестве международного стандарта в 1931 году. Официальное название кода Бодо -- International Telegraph Alphabet #2, ITA-2. Он использовался в телетайпных аппаратах и, соответственно, в первых компьютерах, некоторые из которых эти аппараты использовали в качестве входных-выходных консолей. Коды Бодо -- пятибитные, поэтому количество представленных символов ограниченно 32-мя, чего для всех необходимых символов не хватает. Для увеличения этого числа, как и в коде Брайля, использовались shift-переключатели. Это неудобно -- основная проблема в том, что переключатель типа shift действует до тех пор, пока не встретится другой переключатель, отменяющий первый (в HTML, к примеру, каждому тегу поставлен в соответствие закрывающий тег). Поэтому, если какое-то сообщение заканчивается цифрой, то начало следующего за ним текста до первого отменяющего переключателя будет представлять бессмысленный набор цифр вместо букв. С этим мог сталкиваться каждый, кто пытался печатать "красиво" на матричных принтерах, скажем, на популярном некогда FX-800, или еще более древнем Robotron 63291. Если некий текст заканчивался курсивом без отмены этого режима в конце документа, то следующая попытка что-то распечатать приводила к тому, что документ тоже начинался с курсива.

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


1) Для простейшего управления матричными принтерами существовала специальная система команд IBM Proprinter (она поддерживается и принтерами Epson, так как именно Epson поставляла первые принтеры для IBM PC), которые позволяют осуществлять элементарные операции с текстом и даже манипулировать принтером в графическом режиме при поточечной печати. Команды состоят из символа ESC (код 27) и последующего байта, кодирующего собственно команду. Например, коды 27 69 переключат принтер в печать жирным шрифтом, а 27 70 -- отключают этот режим. Не все знают, что и современные принтеры, скажем, лазерные, тоже поддерживают этот набор команд.

 

Часть 2. Дата публикации: 25 Декабря 2002


В конце 50-х -- начале 60-х годов в США был распространен семибитный код, известный как FIELDATA. Это было очевидно "потолочное" решение -- он несовместим ни с чем и ни в чем. Символы в нем произвольным образом перемешаны с управляющими командами, причем сами команды явно избыточны: например, наряду с полным набором прописных и строчных букв присутствуют и команды переключения "Upper Case/Lower Case". Вообще "технические условия" под общим названием FIELDATA включали не только кодировку, но и спецификации электрических параметров, разьемов и пр. -- код был предназначен для аппаратного кодирования/декодирования и использовался, например, в компьютерах UNIVAC. О FIELDATA, известном еще под названием "DoD standard", можно было бы вообще не вспоминать, если бы он не сохранился чуть ли не до нашего времени в старом ПО, написанном на Коболе, для которого первоначально был выбран именно этот стандарт представления символов.

В 1963 г. возник, а в 1967-м был утвержден в качестве стандарта American Standard Code for Information Interchandge -- ASCII, который и является до сих пор основой всех кодовых таблиц. У истоков ASCII стояли AT&T и IBM. Полноты картины ради следует упомянуть, что для мейнфреймов IBM вплоть до начала 80-х годов принят другой код -- EBCDIC, довольно громоздко устроенный и ведущий свое происхождение от перфокарт. Но с ним подавляющему большинству компьютерных пользователей столкнуться вряд ли случится. А вот ASCII...

Сам по себе "американский стандарт" задуман был неплохо. Собственно стандарт ASCII определяет только семибитный код, то есть с его помощью можно закодировать 128 символов. Этого достаточно, чтобы представить 52 латинские буквы (строчные и прописные), цифры, знаки препинания, арифметические действия, различные скобки и наиболее употребительные спецсимволы, вроде знака доллара или процента. Кроме того, с целью придания стандарту большей универсальности, коды с номерами 1-31 (код 0 не используется) отведены под команды принимающему устройству, среди которых есть как никому не нужные теперь "звонок" или "запрос", так и широко употребляющиеся "конец строки" и "перевод каретки" (интересно, что почти все современные принтеры адекватно реагируют, например, на код 12, который означает "извлечь страницу"). Код 32 означает "пробел". Для национальных расширений разработчики оставили вторую половину восьмибитной таблицы -- коды от 128 до 256, где в оригинале содержались буквы с диакритическими знаками, некоторые спецсимволы и символы псевдографики, позволявшие, например, оформить текст в виде таблицы или нарисовать символ интеграла. Задумано было неплохо, но тут-то все и началось.

По какой причине разработчики первых серверов для передачи текстовых сообщений решили ограничиться семью битами -- мне неизвестно. Возможно, они использовали восьмой бит для контроля четности. Не думаю, что они таким образом хотели отрезать Америку и Англию от остального мира, но факт, что тем, кто использовал вторую половину таблицы в своих национальных целях, пришлось срочно что-то придумывать, иначе вместо текста, использующего вторую половину таблицы, на приемном конце получался бессмысленный набор байтов, каждый из которых отличался от исходного ровно на 128 в меньшую сторону.

Французам и другим европейцам было проще других. Они могли просто ограничить себя в использовании диакритических знаков, к тому же в ASCII, кроме всего прочего, имеется такая команда, как Backspace, с кодом 08, которая позволяла на матричном принтере вернуть каретку назад и напечатать поверх предыдущего символа нужный значок, имитируя диакритические знаки. Русским же и другим несчастным, пользующимся кириллицей, пришлось хуже. Так в середине 70-х возник КОИ, в котором русские буквы во второй половине таблицы ставились на такие места, чтобы при вычитании 128 из кода получалась соответствующая по звучанию (но не всегда -- по написанию) английская буква, причем в противоположном регистре, чтобы отличить английский текст от русского. Скажем, слова "Русский Текст" превратились бы в "rUSSKIJ tEKST". Хотя разработчикам нельзя отказать в остроумии, но выглядело это дело уже тогда, мягко говоря, доморощенно. Однако фактом остается то, что долгое время КОИ-8 существовал в виде общесоюзного стандарта (ГОСТ-19768-74) и даже чуть было не был утвержден в качестве международного (ISO-IR-111 или ECMA-Cyrillic). И сейчас KOI-8r (вообще кодировок с общим названием КОИ существует по меньшей мере семь) как был, так и остался самым распространенным стандартом для электронной почты, и в славные времена создания Релкома, в конце 80-х, был возведен в ранг Интернет-стандарта под названием RFC-1489. Тут, конечно, сыграло свою роль то, что он и был к тому времени стандартом де-факто (подкрепленным авторитетом ГОСТа) для Unix-систем, которые доминировали в сетевых делах.

Ну что ж, КОИ так КОИ -- мало ли существует дурацких стандартов, которые, однако, приходится соблюдать? Но не тут-то было. КОИ-8, кроме своей, так сказать, совместимости с семибитным ASCII, в остальном был страшно неудобен. Например, символы псевдографики в нем превращались в русские буквы или вообще незнамо во что. Поэтому те, кто не был плотно завязан на сети, стали разрабатывать свои кодировки -- кому какая удобнее. Одна из них даже сменила КОИ-8 в качестве общесоюзного стандарта (ГОСТ 19768-87). Нет никаких сомнений, что такой выбор из множества имевшихся вариантов экспертами Госстандарта был обусловлен исключительно "потолочными" соображениями. Потому что эта кодировка (ГОСТ, кстати, действует и поныне) не имеет ровно никаких преимуществ перед КОИ, кроме разве того, что коды строчных букв отличаются от кодов прописных букв на 32, как и в английской части таблицы, и еще стали доступны некоторые специальные знаки из расширенной ASCII с номерами 240-256 (например, довольно часто требующиеся значки градуса температуры или "плюс/минус"). Еще больше путаницы в это дело добавили специалисты из ISO, которые включили новый порядок кириллических букв в международный стандарт под названием ISO-8859-5 (как же -- ГОСТ все таки!), но остальную часть таблицы заполнили всякими национальными буквами -- в целях наибольшей универсальности, как утверждалось. Поэтому не только ГОСТ, но и стандарт ISO оказались настолько нестандартными, что их решительно никто не использует. В перечень доступных кодировок в меню, например, MSIE ISO-8859-5 включена, надо полагать, из вежливости по отношению к ISO -- вдруг кому-то в голову придет ее использовать? Сам Госстандат сейчас спокойно приветствует посетителей на своем сайте в кодировке Win1251.

Из всех возникших в конце восьмидесятых кириллических кодировок наибольшее распространение получила так называемая "альтернативная" кодировка. Своим названием она обязана тому, что была выдвинута как альтернатива никому не нужному ГОСТу. Сейчас она более известна как CP866 (Code Page 866) или как кодировка MS DOS. Пожалуй, это самая продуманная из всех кодировок. Прежде всего на своих местах остались символы псевдографики и многие другие спецсимволы из второй половины ASCII -- то есть оформленный с их помощью английский текст абсолютно не менялся независимо от текущей кодовой страницы. Некоторым неудобством стало то, что русские символы располагались в таблице с разрывом -- строчная буква "п" имела номер 175, а "р" и далее начинались с номера 224, и еще буквы "Ё" и "ё" замещали довольно часто употребляемые символы 240 (знак тождества) и 241 (плюс/минус), что иногда приводило к разным некрасивостям. Но это недостатки простительные -- на фоне беспредела, который творился вокруг! Так как кроме "альтернативной" в начальный период распространения персоналок в странах СЭВа действовали еще и болгарская MIC (которая до сих пор используется в болгарской Linux), и какая-то "польская" (которая даже не упоминается на сайте czyborra.com, на котором собраны, кажется, все существующие кодировки вообще), и "украинская", и почти все разновидности КОИ, и CP855, в которой символы кириллицы расположены совершенно иначе, чем в CP866...

Но все это безобразие, казалось, почти прекратилось с приходом на одну шестую часть суши русифицированной Windows. В версии 3.х, которая была фактически просто графическо-многозадачной надстройкой над DOS, использовалась еще СР866. Но корпорация Микрософт никогда не ходила проторенными путями и всегда считала, что она сама себе -- стандарт. Поэтому с выпуском Win-95 она проигнорировала не только кириллические стандарты (официальные или нет), но даже и вообще сложившееся построение второй половины таблицы ASCII, отчасти справедливо рассудив, что символы псевдографики при наличии графических WYSIWYG-редакторов как-то ни чему. Кириллическая азбука волюнтаристски заняла последние 64 ячейки таблицы, кроме опять же букв "Ё" и "ё", которые вставили куда-то в середину. Новая кодировка получила название "Windows 1251". Интересно, что внедрением и CP866 в 1989 году, и Win1251 в 1995 занимался один и тот же человек -- россиянин Петр Квитек (сейчас он возглавляет компанию "Коммунивер.сеть"). Итого, на данный момент на просторах нашей Родины имеются как минимум три реально действующие кодировки -- КОИ-8, Win1251 и CP866, она же MS DOS. Если не считать менее распространенных, например, кодировки Mac, которая используется на компьютерах Apple.

 

Часть 3. Дата публикации: 29 Декабря 2002


Следствием описанной нами в предыдущей статье путаницы стал совершенно фантастический бардак, который одно время царил в области передачи русскоязычных текстов по электронной почте. Началось все с непонятно чем аргументированного желания отечественных провайдеров доставлять письма пользователям в одной и той же кодировке. Зачем это потребовалось -- есть тайна, покрытая мраком. Программу-перекодировщик может написать любой начинающий программист, и тем более производителям софта ничего не стоит включить таковую в состав мейлера, устанавливаемого непосредственно на компьютере пользователя. При этом можно даже переключать кодировку автоматически в соответствии с той, что указана в заголовке письма (как, собственно, сейчас и сделано во всех распространенных почтовых программах). Но умники рассудили по-своему. Потому получалось так: если в заголовке письма кодовая страница была указана правильно (charset=windows1251 и при этом письмо действительно в windows1251), то преобразование проходило нормально (конечно, если еще и программа у провайдера "не забывала" заменить значение поля charset в заголовке). Но вот если мейлер отправителя ошибался, то письмо, написанное в "правильной" КОИ-8, еще раз перекодировалось и получатель имел перед глазами нечто вроде "Дмюом нмтчймачпщ" вместо "Добро пожаловать" (или хотя бы вместо "дПВТП РПЦБМПЧБФШ", что получается при простой ошибке в заголовке). А уж если таких "интеллектуальных" серверов по дороге встречалось несколько... Если бы ошибка в заголовке проходила без наличия промежуточных "умных" инстанций, то мне, как получателю, достаточно было бы вручную перебрать пару-тройку возможных вариантов кодировки и все встало бы на свои места. (Что и сейчас довольно часто приходится делать -- например, русскоязычные письма, посланные через веб-почту yahoo.com из Америки, приходят с указанием в заголовке charset=us-ascii, но сам текст в нормальной win1251.) Дошло до того, что проще было posilat pisma na translite, чем возиться с перекодировками. Положение несколько выправилось, когда почти все поголовно перешли на Outlook. Но и сейчас приходится сталкиваться с письмами, в которых содержится что-нибудь вроде "Sb`f`el{e cnqond`! Ndmnbpelemmn on Mnbnphfqjnls m`op`bkemh~" или вообще "???? ?????! ????? ? ???? ??"...

Вторая проблема, истоки которой надо искать в устройстве первых почтовых серверов -- пересылка вложений. Казалось бы, в чем проблема -- передавай себе байты по Сети, и все тут. Но изначально почта была заточена исключительно под обмен английскими алфавитными символами, т.е кодами 32-127. Коды в таблице ASCII, меньшие чем 32, как мы знаем, представляют команды, то есть вообще не должны отображаться на экране, а коды, большие 127, могли обрезаться семибитными серверами (или подвергаться перекодировке в российских пенатах). Поэтому вложения, в которых по определению могут содержаться байты с любым значением, передают довольно сложным путем: коды преобразовываются так, чтобы они содержали только байты со значением из интервала 33-127. Так устроены распространенные системы конвертации, например, base64. Все, наверное, замечали, что письмо с вложением объемом, скажем, 150КВ, может занимать при передаче более 200 КВ -- это плата за такую конвертацию.

Но все это далеко еще не вечер... Программисты -- это люди, которые всегда знают, как надо сделать еще лучше, чтобы вам жизнь медом не казалась. Ежу понятно, что если кодировать символы не одним, а двумя байтами, то в получающихся 65536 комбинаций можно всадить вообще практически все символы любого мирового языка, включая китайский, японский, корейский и другие, даже самые экзотические. Так родилась захватывающая дух идея Unicode, которую по истовости приверженцев можно сравнить разве что с возникновением христианства. Внедрение этой кодировки упрямо проталкивается всеми софтверными фирмами -- от MS до Apple, что объяснимо -- софтверные гиганты хватаются за любую возможность запутать пользователя как можно больше, чтобы он был вынужден покупать новые версии ихних продуктов. Частично поддержка Unicode была реализована еще в Win95. Между тем, Unicode, в общем, мало кому нужна, кроме этих самых разработчиков ПО, получивших новые заказы. Не верите?

Ладно, пусть я не совсем прав -- Unicode, если соответствующий шрифт действительно многоязычен, может быть очень удобен для создания и обмена документами, в которых надо одновременно представлять тексты на разных языках без смены шрифта -- скажем, при выкладке документов в Сети, когда на компьютере пользователя, скорее всего, многие национальные шрифты вовсе не установлены. Или, например, исчезла бы проблема представления спецсимволов (всяких фигурных кавычек, многоточий и длинных тире, которые Роману Лейбову, редактору рубрики "Net-культура", очевидно, пришлось очередной раз с ненавистью вычищать из этого текста, так как я сам все время забываю это делать). Ограниченное пространство статьи не позволяет подробно разбирать эти проблемы, и здесь я хочу заметить только, что, во-первых, Unicode позволит решить проблему национальных алфавитов в Сети только частично (т.е. в рамках одного-двух универсальных для всех языков начертаний), а во-вторых, ее, как и "проблему кавычек", можно решить и иными способами, о чем ниже. Но что же мешает нам всем стройными рядами перейти на двухбайтовые кодировки?

Во-первых (и даже не в главных), на совершенно пустом месте возникает проблема совместимости шрифтов, причем не только с однобайтовыми TTF, хотя до сих пор глюки, возникающие при открытии файлов Word/6.0 в Word/97, снятся в ночных кошмарах секретаршам с пятилетним и более стажем [1]. Но и современное ПО от таких известных фирм, как Адобе часто несовместимо с Unicode-ttf-шрифтами, причем от версии к версии проблема иногда только усугубляется, как, к примеру в Illustrator-9 по сравнению с Illustrator-8 (подробности см., например, здесь). Проблемы имеются в Adobe Photoshop, Indesign, и при выводе файлов PDF из Pagemaker и Framemaker -- а ведь это все популярнейшие продукты, ставшие своего рода корпоративным стандартом. Другой известнейший продукт, спотыкающийся на Unicode -- Delphi.

Большинство подобных проблем возникает от того, что механизмы переключения с языка на язык в однобайтовых кодировках и в Unicode принципиально различаются. Для обычных шрифтов достаточно поменять сам шрифт, а в Unicode надо переключать язык (то есть объявлять сдвиг требуемой таблицы символов относительно начала файла). Причем если для обычных редакторов переключение вида отображаемых на экране символов и смена раскладки на клавиатуре есть, вообще говоря, совершенно различные функции, то для Unicode все смешивается. Для того, чтобы один раз в год вписать в русскоязычный текст слово на иврите или на древнегреческом, в Word’e-6.0 было достаточно на всякий случай иметь нужный шрифт, и все в порядке. А в Unicode-версиях вы малой кровью не обойдетесь -- простое объявление фрагмента текста написанным на иврите скажется разве что на проверке правописания. Здесь для этого надо, как минимум, установить нужную раскладку клавиатуры, чтобы после этого обнаружить, что в имеющемся шрифте страница иврита отсутствует... С другой стороны, ошибочно указанная или вовсе не указанная языковая страница часто приводит именно к тому, что наблюдали упомянутые секретарши при попытке открыть не-Unicode файл в Unicode-редакторе. Но все ли в мире работают в MS Word’e?

Пользователю текстового редактора удобнее, когда каждый шрифт располагается в отдельном файле и имеет специфическое название -- так вы точно знаете, какими, к примеру, русскоязычными шрифтами вы располагаете. Да и для разработчиков ПО жизнь несравненно облегчается. А по файлу Unicode ничего понять нельзя -- очень возможно, в данном шрифте вовсе нет кириллической страницы. Вот мы и перешли к главному: ведь по идее каждый (каждый!) файл шрифта в формате Unicode обязан иметь все без исключения возможные кодовые таблицы. Но кто же этим будет заниматься!? Какое дело разработчикам из "Параграфа" до вьетнамского или тайского языка -- да они, скорее всего, не смогли бы создать приличный шрифт необходимого начертания, если бы даже и захотели. Точно так же японцам, да и самим американцам нет дела до кириллицы. А если в файле Unicode нет какой-то страницы, то вся затея полностью обессмысливается -- намного проще и для разработчиков и для пользователей иметь русский или вьетнамский шрифт отдельно и тем самым решить массу проблем одним махом. Потому сама затея с Unicode мне несколько напоминает тех самых провайдеров, которые взялись унифицировать кодировку почты -- задумано хорошо, но зачем все это? Можно попробовать придумать пару методов, которые окажутся ничуть не хуже Unicode, но без необходимости иметь столь громоздко устроенный языковый механизм -- с использованием каких-нибудь shift- или даже escape-переключателей (ну, назовите их "тегами"), например.

Между тем, консорциум Unicode приготовил для нас еще более великолепный подарок, которого мы все ждали, конечно, пуская слюни от нетерпения. В новом стандарте ISO/IEC 10646 предусмотрены шрифты с... 21-битной кодировкой. Там даже можно создавать свои собственные частные кодовые страницы. Никак для новых докторов Заменхоффов заготовили.


1) А представим на секунду, что у нас за ПО, как в Америке, действительно приходилось бы платить те деньги, которые запрашивает MS -- сколько тогда старых Office-95 и Word’oв-7.0 было бы еще в ходу? Впрочем, они и так в ходу, на что указал читатель Владимир Георгиев: "в России работает на удивление много старых машин". И не только в России, добавим. Наблюдать секретаршу, работающую в "MS Word for DOS 6.0" в конторе какого-нибудь американского юриста -- вовсе не исключительный случай. (назад к тексту)


 

Hosted by uCoz