flag_kz

Тернистый путь компьютерных кодировок казахского языка или как нехорошо нарушать стандарт

(технический комментарий + программы для перекодировки)

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

Главное, что Вы узнаете, прочитав этот документ - это нижеследующее:
  1. Правильная 16-битовая кодировка казахского языка - это Unicode, то есть та, в которой казахские тексты пишутся в Win2000, XP (с недавних пор) и с помощью KazWin (сравнительно давно).
  2. Развелось много псевдо-Unicode кодировок (шрифтов) казахского языка.
  3. Можно попробовать определить какая разновидность неправильной кодировки попалась Вам (см. Разделы 6.1-6.4)
  4. Скачав программку "Перекодировщик KKReCode" можно перекодировать документ WinWord в правильную кодировку (совместимую XP и KazWin). См. Разделы 6.1-6.4.
  5. Найдете довольно много справочного материала.
  6. Проникнитесь мыслью, что нарушать стандарты – нехорошо и даже чревато…

Вместо эпиграфа:
Сегодня - нарушишь правила уличного движения,
Завтра – продашь Родину.

Оглавление

1. Введение и кому это предназначено.
2. Как я влип в эту историю.
3. Техническое введение.
4. Шестнадцатибитовая кодировка UNICODE / ISO-10646.
5. Восьмибитовые кодировки.
5.1. Восьмибитовые кодировки русской кириллицы.
5.2. Восьмибитовые кодировки казахского языка.
5.2.1. Кодировки казахского языка, совместимые с cp1251. Кодировка KazWin.
5.2.1.1 Кодировка Kaz.
5.2.1.2 Кодировка KaZ.
5.2.1.3 Кодировка KZ.
5.2.1.4 Кодировка KZ-bis.
5.2.1.5 Кодировка KZ-1048
5.2.2. Кодировка KOI8-С.
6. Зоопарк казахских псевдо-Unicode кодировок.
6.1 Псевдо-Unicode шрифты Kaz и как с ними бороться.
6.2 Псевдо-Unicode шрифты KaZ, а как с ними бороться?
6.3 Псевдо-Unicode шрифты KZ и борьба с ними.
6.4 Псевдо-Unicode шрифты KZ-bis. С ними тоже можно бороться.
7. Приложение 1. Список таблиц, упомянутых в тексте.
8. Приложение 2. Список некоторых псевдо-Unicode шрифтов в разных кодировках.

1. Введение и кому это предназначено.

До настоящего времени (а эта строка писалась 17.09.2002, хотя задумывалась уже давно) существует всем надоевший разнобой компьютерных кодировок казахского языка. Часто говорят, что это из-за отсутствия единого стандарта, но это не совсем так, и с этим безобразием можно было покончить еще, этак, в году 1997, когда началось массовое распространение 16-битовой кодировки, поскольку международный 16-битовый стандарт кодировки казахских букв, а точнее расширенной кириллицы, существует с начала 90-ых годов. Но, увы, с тех пор ситуация только усугубилась. Сейчас, в связи с выходом последних версий операционных систем, наконец-то, и как-то поддерживающих казахский язык, ситуация обещает быть лучше, но для перехода к единой кодировке нужно помочь сотням тысяч рядовых пользователей разобраться, что к чему и как перевести мегабайты (килобайты?) накопленных документов на правильную кодировку. Цель этого документа помочь, если не всем этим сотням тысяч, то хотя бы одной тысяче, не поленившейся разобраться в технических деталях. Эта тысяча, можно надеяться, уже поможет остальным, не считающим интересным вникать в технические подробности.

2. Как я влип в эту историю (для любителей истории – остальным можно не читать- переходите сразу к Разделу 3)

Автор этих строк занимался клавиатурными драйверами казахского языка еще с времен MS-DOS и Windows 3.x, «не корысти ради, но пользы дела для». Появилась Windows’95 – сделал и для нее. Друзья потребовали казахстанизатор для Windows’NT – сделал, а поскольку NT в принципе Unicode – система познакомился с этим стандартом. Это сейчас на сайте консорциума Unicode прекрасно оформленные pdf-альбомы с изображениями символов и их кодировкой, а тогда в середине 90-х на задворках ftp сервера unicode.org, с трудом можно было найти словесное описание блока кириллицы, а потом тщательно изучать кириллицы народов СССР, чтобы понять например, что под названием “schwa” скрывается казахское (в общем, обычная история о том, что «нынешнее молодежь пришла на все готовенькое, а нам приходилось ночью, в метель, с непокрытой головой, босиком по снегу, идти к единственному в округе пункту доступа к Интернет в сельпо… И вела нас, блин, разумеется, неистребимая жажда знаний, неизвестная нынешнему поколению зряшных геймеров»). Около 1997 года приложения Windows перешли на Unicode – пришлось сделать поддержку Unicode для Windows’9x. Что делали другие разработчики - не интересовался - был уверен, что то же самое. Потом, с выходом Windows’2000, стало творится что-то непонятное – по э-мейл посыпались вопросы о совместимости KazWin c Win2k. Я недоуменно отвечал: конечно совместимо, это же Unicode, как же иначе, стандарт он и в Африке... Затем некоторые стали присылать шрифты и тексты на казахском, несовместимые с KazWin, с вопросом почему и что делать. Только тогда я понял, что стандарт он только в Африке стандарт, а у нас в Казахстане многие решили, что «мы пойдем другим путем». «Другой путь» описан ниже в Разделе 6. Оказалось, что псевдо-Unicode шрифты получили широчайшее распространение и это стало серьезной проблемой, многие неспециалисты дезориентированы и не понимают, что стандарт то есть, и есть давно, просто очень многие упорно не придерживается его, порой по незнанию, а порой просто накопив большой архив в нестандартной кодировке. Я же долго оставался в неведении - в моем окружении все, естественно, пользуются KazWin и таких проблем не знают, сам я считал свой казахстанизатор одним из многих, а оказалось, что на самом деле это один из немногих казахстанизаторов (по крайней мере - первый), изначально корректно поддерживавших стандарт (т.е. совместимых с нынешними Win2k и Win XP). Настоящая статья есть мой дополнительный вклад в попытку исправить положение, предложив программки – перекодировщики из псевдо-Unicode-ов в корректный Unicode.
Итак, перейдем к делу…

3. Техническое введение

Как известно текст в компьютере кодируется числами. Физически числа в компьютере записываются и хранятся в двоичном виде как некая последовательность битов «0» и «1». Исторически сложилось, что последовательность в восемь бит (названная байтом) является отдельной, часто наименьшей адресуемой единицей хранения информации в компьютере. То есть компьютеры оперируют информацией разбитой для удобства на байты. В недавнем прошлом, когда компьютерная память была очень дорогой, для кодирования текстовой информации использовалась исключительно 8-битовая кодировка, т.е. на каждую букву, точнее символ, выделялся один байт. А один байт может представлять 256 разных битовых комбинаций, и значит может кодировать столько же символов. Первые 128 числа всегда занимают (т.е. кодируют) строчные и заглавные буквы английского языка и некоторое количество необходимых (американцам) символов (см. Таблицу 1). Это наследие еще более древних времен, когда использовалась 7-битная кодировка, а компьютеры «говорили» только на английском (с сильным американским акцентом). Эта 7-битовая кодировка, а семь бит как раз позволяют кодировать 128 символов, называется стандартом ASCII (читается «аскии» и является сокращением от чего-то вроде American Standard for Computer Information Interchange ). Вторая половина 8-битовой таблицы кодировки меняется от страны к стране. Здесь аборигены размещают, как правило, недостающие буквы местной латиницы, или, если местный алфавит не латинский, то весь местный алфавит, скажем, иврит или кириллицу. Ряд 8-битовых таблиц, называемых еще кодовыми страницами (codepage) стандартизованы международными стандартизующими организациями, например ISO (International Standard Organization), скажем ряд кодировок ISO-8859, самая распространенная из которых ISO-8859-1 (См. Таблицу 2), по-другому называемая Latin-1. она же в обозначениях Microsoft – таблица 1252. Самая распространенная она из-за того, что ее используют ряд влиятельных европейских языков от французского до испанского (а после недавней орфографической реформы, может быть и немецкий язык, не знаю точно) .
Нынче компьютерная память подешевела и в современных компьютерах ее достаточно много, поэтому наиболее актуальная кодировка сейчас – шестнадцатибитовая (двухбайтовая). Шестнадцать бит позволяют закодировать аж 216 = 65536 различных символов. Этого вполне достаточно, чтобы присвоить различные коды практически всем буквам и символам актуальных письменностей, существующих сейчас на Земле, включая даже несколько тысяч китайских иероглифов.

4. Шестнадцатибитовая кодировка UNICODE / ISO-10646

К счастью, стандарт 16-битовой кодировки сейчас один. Он создан и развивается консорциумом причастных к этому делу компаний, именуемым Unicode (произносят обычно как «юникод»). Стандарт ISO-10646 (точнее даже ISO/IEC-10646), является практически тем же самым стандартом (редкий случай, когда дело касается кодировок, более привычно предлагать и придерживаться взаимно исключающих вариантов).
Для кириллической письменности в стандарте Unicode выделен диапазон 0x0400-0x04FF, этот диапазон стандартизован еще в начале 90-ых годов, включая все дополнительные буквы расширенной кириллицы, используемых в современном казахском алфавите. В Таблице 3 приведены знаки и их Unicode коды всех букв вовлеченных в вопросы, касающиеся данной статьи.
Кстати, диапазон 0x0000-0x007F, то есть начало таблицы Unicode отдана старой доброй ASCII, а следующие 128 (диапазон 0x0080-0x00FF) все той же, упомянутой выше Latin 1.
Начиная с MS WinWord’97 все последующие версии этой популярной программы работают с только с шестнадцатибитовыми шрифтами в Unicode кодировке. Хотя в стандарте Unicode в настоящий момент присвоены коды абсолютному большинству букв и символов, используемых сейчас человечеством, разумеется, что в конкретном файле шрифта *.ttf, содержатся далеко не все эти символы. Что касается кириллицы, то базовая тройка шрифтов операционных систем Windows (Arial, Times New Roman, Courier New), вплоть до выхода Windows XP, содержала знаки кириллицы достаточные лишь для русского, украинского, белорусского да сербского, македонского с болгарским. Однако еще с времен Windows’98 на сайте Microsoft были доступны для бесплатного скачивания новые версии #2.82 этих базовых шрифтов, в котором уже были ВСЕ буквы казахского языка в Unicode кодировке. Недавно Microsoft убрал эти шрифты с сайта, видимо с целью проталкивания своей Windows XP, где они уже присутствуют в стандартной инсталляции. Следует твердо усвоить, что казахские буквы в шрифте должны иметь строго стандартные коды, те что приведены в Таблице 3. Отступления от этого стандарта и породили нынешнюю путаницу с кодировкой казахских текстов. Как конкретно создалась эта путаница – см. пояснения ниже.
Кстати, если в данном конкретном шрифте нет изображения какой-либо буквы или символа, то на ее (буквы или символа) месте, изображается пустой квадратик. Вот такой: . Так часто бывает если казахский текст в правильной Unicode кодировке, а используемый шрифт не содержит специфических казахских букв, например это стандартный Arial или Times New Roman версии меньшей, чем 2.82.

5. Восьмибитовые кодировки

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

5.1. Восьмибитовые кодировки русской кириллицы

Если для какого-нибудь француза вопрос «А текст-то твой в какой кодировке?» не имеет смысла: там везде и всюду одна и та же Latin-1, то для русского пользователя ситуация трагичней: тут как минимум четыре широко распространенных 8-битовых кодировок (на самом деле больше, но ограничимся этим). Спрашивать «Зачем так много?» так же бессмысленно, как и вопрос о кодировке задавать французу. Так сложилось исторически, большинство кодировок «подарены» в свое время зарубежными компаниями, искренне заинтересованными в существовании единой (но только своей) кодировки кириллицы. Перечислим эти кодировки.
Первая (не по времени возникновения, а просто по порядку) это так называемая кодовая страница 866 (см. Таблицу 4), стандартизованная то ли фирмой IBM, то ли, наоборот, ВЦ АН СССР. Получила широкое распространение с операционной системой MS –DOS, поскольку там и использовалась. В обиходе до сих пор называется «ДОСовской кодировкой» или, не очень грамотными пользователями, «Нортоновской кодировкой» по имени наиболее распространенного интерфейса к MS-DOS. Пожалуй, это отмирающая кодировка – сохраняется в некоторых приложениях из соображений совместимости с старыми версиями или с накопленными документами.
Вторая кодировка: кодовая страница 1251 (см. Таблицу 5). Число 1251 как и 866 ничего не означает – просто видимо обозначения вырвавшиеся на волю из внутрифирменной технической документации. Это основная 8-битовая кириллическая кодировка операционных систем семейства Windows и поэтому самая распространенная нынче 8-битовая кодировка русского языка. Комментарии, ввиду распространенности этих операционных систем, излишни.
Третья: KOI-8R (см. Таблицу 6). Исторически самая старая из распространенных нынче кодировок кириллицы, родившаяся из соответствующего ГОСТа. Традиционно основная кодировка кириллицы в мире платформы UNIX и ему подобных. Благодаря этому, пережила второе рождение и стала основной сетевой кодировкой русского языка в Интернете. Главный соперник кодировки 1251.
Последняя кодировка ISO-8859-5 (Таблица 7) – сдается, что это чистое недоразумение. Стандартизована ISO еще в советские времена, по-видимому, даже без участия кого-нибудь из пользователей кириллицы. Сознательного использования этой кодировки я не встречал. Говорят, что используется в больших базах данных промышленного масштаба. Поскольку на кодировке стоит клеймо ISO, то большинство зарубежных производителей программного обеспечения считают необходимым поддерживать этот стандарт, считая, наверное, его таким же обязательным как их ISO-8859-1.
Кодировку кириллицы в компьютерах Macintosh фирмы Apple (разумеется отличной от упомянутых выше) мы здесь упоминать не будем, чтобы не говорить об остальных… (А их еще есть!)

5.2. Восьмибитовые кодировки казахского языка

Стандарт 8-битовой кодировки казахского языка, совместимый с CP1251 был тихо, без огласки принят только 2002 году, опоздав почти на 10 лет. Естественно за эти годы разные разработчики с разной степенью продуманности предложили и реализовали свои варианты 8-битовой кодировки. Поскольку казахский язык использует кириллицу, то естественно, попытки предложить таковую исходили из принципа совместимости с русскими кодировками. А поскольку и в русском языке нет единственной кодировки, то существует реальная угроза цепной реакции – каждая русская кодировка будет обрастать, или уже обросла, несколькими казахскими вариациями, со всеми вытекающими последствиями.
Казахские вариации кодировки MS-DOS (866) мы здесь рассматривать не будем, ввиду кажущейся неактуальности (будет время - добавлю раздельчик и про это). Рассмотрим сначала модификации таблицы 1251.

5.2.1. Кодировки казахского языка, совместимые с cp1251. Кодировка KazWin.

Присмотримся к таблице cp1251. Русский алфавит занимает диапазон 0xC0-0xFF (последние четыре строки), за исключением букв Ё и ё, размещенных в позициях 0xA8 и 0xB8, соответственно. В совместимой кодовой странице эти позиции желательно оставить без изменений, что автоматически сохраняет совместимость и с болгарским языком. Замена уместна, в первую очередь, для позиций, занимаемых македонскими буквами , , , сербско-македонскими , , , , и чисто сербскими , . Во вторую очередь, можно пожертвовать совместимостью с украинским языком, с его мало используемой буквой , затем часто используемыми , и наконец белорусской . Украинско-белорусская кириллическая буква есть и в казахском, поэтому ее нужно сохранить в стандартной позиции. При замене букв, логично прописную букву менять на прописную, строчную на строчную, и лучше руководствоваться хотя бы отдаленной похожестью заменяемых букв на замещающие. По такой логике в свое время была создана 8-битовая таблица (назовем ее cp1251-k), используемая казахстанизатором KazWin (см. Таблицу 8), предложенная еще во времена Windows 3.xx, и получившая достаточно широкое распространение за все эти годы, благодаря свободному распространению через Интернет последующих версий KazWin для Windows'95/98, Me, NT, 2000. Но это не единственная 8-битовая кодировка казахского языка, совместимая с cp1251, получившая распространение в Казахстане. Итак, кроме кодировки KazWin, поискав в Интернете, удалось обнаружить следующие различные кодировки. Авторы кодировок, или какие компании стоят за ними, мне чаще всего неизвестны, да и для целей этой статьи это неважно, а чтобы как-то их называть и ссылаться, дадим им следующие названия (по чаще встречающемуся суффиксу в названиях соответствующих шрифтов):
1) Кодировка «Kaz»
2) Кодировка «KaZ»
3) Кодировка «KZ»
4) Кодировка «KZ-bis»
И наконец, вышедший после всего официальный стандарт СТРК 1048-2002, для зарегистрированный IANA как KZ-1048.
Наверняка есть еще и другие кодировки, но по тому, что эти удалось выловить из Интернета не напрягаясь, видимо эти – самые распространенные. Рассмотрим и прокомментируем их.

5.2.1.1 Кодировка Kaz

Кодировка Kaz приведена в Таблице 9. Дополнительные буквы казахского языка расположены в ряду 0xB0-0xBF, в порядке диктуемом алфавитом, за исключением букв . При этом «снесены» строчная ё и кириллические и . Причем вместо последних в казахских текстах используются латинские аналоги, что также есть нарушение обычаев – нельзя путать различные письменности, в частности латинское и кириллическое – это приводит к сложностям в реализации алгоритмов обработки текстов. Еще одна неудача связана с заменой символа в позиции 0xB6, используемого для обозначения непечатаемого знака конца строки, казахской буквой . В режиме показа непечатаемых знаков в конце каждой строки непрошено появляется упомянутая буква.

5.2.1.2 Кодировка KaZ

Кодировка KaZ приведена в Таблице 10. Логика замены части букв и части символов непонятна. Производит впечатление случайного выбора мест для размещения букв казахского алфавита.

5.2.1.3 Кодировка KZ

Кодировка KZ приведена в Таблице 11. Логика почти такая же как кодировке KazWin, даже многие буквы совпадают. Только почему-то заменой «пожертвовано» совместимостью с белорусским языком, когда как еще оставалась, теперь уже бесполезная, часть сербско-македонских букв.

5.2.1.4 Кодировка KZ-bis

Еще одна кодировка KZ, назовем ее KZ-bis, приведена в Таблице 12. Эта кодировка в части касающейся казахских букв происходит от так называемой кодовой страницы PT154 (Asian Cyrillic) одной российской фирмы. Полностью эта кодировка приведена в Таблице 13. Логика расположения, практически такая же как изложенная выше для кодировки KazWin, отсюда и некоторые совпадения, однако задача здесь стояла шире – охватить запредельно большое количество языков, вплоть до башкирского с таджикским, что заставило разместить некоторые казахские буквы на «небуквенных» местах таблицы cp1251, что вообще терпимо, если затем корректно преобразовывать такую кодировку в 16-битовую, но об этом потом…

5.2.1.5 Кодировка KZ-1048

Этот долгожданный официально принятый 8-битовый стандарт кодировки казахского языка приведен в Таблице A. Авторы стандарта почему-то в первую очередь пожертвовали совместимостью с украинским и белорусским языками, заодно и сербским и македонским, хотя мест, занимаемых сербско-македонскими буквами вполне хватало для размещения всех казахских букв, а совместимость с украинцами и белорусами можно было сохранить - все же связи с этими странами большие да и украинцев в Казахстане довольно много. В результате места части сербско-македонских букв остались не к селу не к городу... Такое впечатление что авторы стандарта на продумали так тщательно, как следовало бы (наверно времени не хватило). Ну, вот теперь будем жить с таким стандартом...
Кодировка стараниями А.Веремеева из Oracle (спасибо ему!) зарегистрирована в IANA.org под названием KZ-1048. Ранее использованное в данной статье название кодировки RK1048, зарегистрированно как синоним (alias).

5.2.2. Кодировка KOI8-С

Рассказ о 8-битовых кодировках будет неполным, если не упомянуть о кодировке KOI8-C (см. Таблицу 14). Не путать с изначально одноименной кодировкой для древнерусской письменности, которая сейчас кажется, в конце концов, обрела другое название: KOI8-O. Вариант KOI8-C предложен одним западным энтузиастом, и C означает «Caucasian» (Кавказская). Правда, чтобы кодировка стала более кавказской не хватает буквы (Unicode #0x04C0 – не путать с латинской I (0x0049) и с кириллической прописной (0x0406)). Стандартное юникод название этой прописной буквы «palochka», она не имеет строчной пары и используется во многих кавказских языках. Зато в KOI8-C есть буква , к Кавказу не имеющая никакого отношения и существующая только в казахском языке. Похоже в настоящий момент эта кодировка не шибко то и используется, реализацию этой таблицы в UNIX-ах я пока нашел только в OpenBSD, и то с ошибкой (если бы кто-то пользовался – то ошипки бы не было). Надеюсь, в нашей стране никто не будет пользоваться этой кодировкой – нам что мало разнобоя русских кодировок и мы так и будем каждую такую размножать пятью-шестью казахстанскими вариациями? вместо того, чтобы, пока возможность не упущена полностью, остановится на одной и жить как французы…

6. Зоопарк казахских псевдо-Unicode кодировок

Теперь мы готовы к объяснению откуда появились многочисленные казахские псевдо-Unicode шрифты с суффиксами Kaz/Kazakh, KaZ, KZ в конце названия и KZ перед названием. Дело в том, что когда с выходом MS WinWord’97 произошел массовый переход от шрифтов в восьмибитовой кодировке к 16-битовой, практически все разработчики клавиатурных драйверов не стали их дорабатывать, включая корректные таблицы перекодировки 8-битовой кодировки в Unicode и обратно, а просто перекодировали свои 8-битовые шрифты в 16-битовые по таблице трансляции cp1251 в Unicode, часто даже с помощью одной и той же утилитки TTFCONV.EXE, ходившей тогда по рукам. И тогда казахские буквы в cp1251-совместимых 8-битовых таблицах поставленные на место сербско-македонских попали в Unicode –шрифтах под коды этих сербо- македонцев. Это в лучшем случае. В худшем, если казахской букве непосчасливилось стоять на месте какого-нибудь технического символа, то ее выносило куда-нибудь аж в диапазон технических символов 0x2300-0x23FF. А мы хорошо помним, что кириллическим буквам положено по стандарту твердо стоять в диапазоне 0x0400-0x04FF, причем каждой на своем месте, казахским буквам под своим кодом, македонским под своим, как показано в Таблице 3.
Некоторые, в деле нарушения стандарта, пошли еще дальше – оттранслировав свои 8-битовые таблицы один к одному в начало Unicode таблицы, т.е. на место cp1252 (Latin 1), что уже даже несовместимо с кодировкой русского языка (За что спрашивается боролись?)
А что надо было делать? Делать надо было ПОЛНЫЙ, т.е. корректный клавиатурный драйвер, не ограничиваясь клавиатурной раскладкой, а еще добавить правильные таблицы трансляции 8-бит (самодельная таблица) в 16-бит (корректный Unicode) и обратно, или просто, басты ауыртпай, пользоваться готовым KazWin-ом.

6.1 Псевдо-Unicode шрифты Kaz и как с ними бороться.

Псевдо-Unicode кодировка шрифтов, чаще всего имеющих в названиях суффиксы Kaz или Kazakh приведена в Таблице 9. Над каждой буквой приведен ее юникод. В случае если в данной кодировке некая буква стоит не под своим кодом, то ее неверный юникод выделен красным цветом. В данном случае, кодовая таблица cp1251 транслирована на место таблицы cp1252 и вся кириллица имеет «неродные» юникоды. В этом случае вот такая последовательность букв
:Sample.gif

будучи представлен стандартно-корректным Unicode шрифтом, будет выглядеть так:
SampleKaz.gif
и для ее перекодировки в правильную (стандартную) Unicode кодировку можно воспользоваться программкой KKReCode которую можно скачать вот здесь:2KReCode.exe2KReCode.exe . Панель настроек программки для перекодировки в этом случае должна выглядеть вот так:
settings

6.2 Псевдо-Unicode шрифты KaZ, а как с ними бороться?

Это очень странная кодировка. Мало того что невозможно понять логику ее 8-битового прототипа, так ее в псевдо-Unicode таблице на самом деле ДВЕ таблицы! То есть скажем кириллическая A там есть под своим юникодом 0x0410 и еще под чужим 0x00C0. И так каждой буквы по паре. С казахскими буквами сложнее – они то удвоенны, то в одном экземпляре для обеих таблиц. В общем, это трудно объяснить – смотрите Таблицу 10 и разбирайтесь… Соответственно, образец текста:
Sample.gif
будучи представлен стандартно-корректным Unicode шрифтом, может выглядеть так:
SampleKaZ1.gif
а поскольку в этом шрифте прячутся две кодировки, может и так:
SAmpleKaZ2.gif
a для ее перекодировки в правильную (стандартную) Unicode кодировку можно воспользоваться программкой KKReCode которую можно скачать вот здесь:2KReCode.exe2KReCode.exe . Панель настроек программки для перекодировки в этом случае должна выглядеть вот так:

6.3 Псевдо-Unicode шрифты KZ и борьба с ними.

Замечено, что есть «старые» шрифты с суффиксом KZ в конце названия шрифта (типа Times New Roman KZ), это и есть псевдо-Unicode шрифты. (Таблица 11) Но мне встречались и «исправленные» корректные Unicode шрифты с таким названием (они были с самодельным клавиатурным драйвером, укомплектованным правильным файлом таблиц трансляции 8 бит в 16 и обратно, «позаимствованным» кем-то из KazWin). Образец текста
Sample.gif
в псевдо-Unicode кодировке KZ, будучи представлен стандартно-корректным Unicode шрифтом, будет выглядеть так:
SampleKZ.gif
и для ее перекодировки в стандартную Unicode кодировку надо воспользоваться программкой KKReCode которую можно скачать вот здесь:2KReCode.exe2KReCode.exe . Панель настроек программки для перекодировки в этом случае должна выглядеть вот так:

6.4 Псевдо-Unicode шрифты KZ-bis. С ними тоже можно бороться.

Это чаще всего шрифты с суффиксом KZ начале названия шрифта (вроде KZ Arial). Кодировка приведена в Таблице 12. Образец текста
Sample.gif
в псевдо-Unicode кодировке KZ-bis, будучи представлен стандартно-корректным Unicode шрифтом, будет выглядеть так:
SampleKZbis.gif
Для ее перекодировки в стандартный Unicode можно воспользоваться  программкой KKReCode которую можно скачать вот здесь:2KReCode.exe2KReCode.exe . Панель настроек программки для перекодировки в этом случае должна выглядеть вот так:

Список таблиц, упомянутых в тексте см. в Приложении 1.

Примечание. Списки названий псевдо-Unicode шрифтов, встретившихся мне перечислены в Приложении 2. Обратите внимание, что встречаются шрифты под одним и тем же именем, но в разных кодировках. Различить их можно только внимательно рассмотрев какие символы стоят вместо каких букв, при представлении текста правильным Unicode шрифтом.

Пока все. Успешной работы!

Далее можно почитать:

Кодировка казахских Веб-страниц в Интернете.
Казахстанские клавиатурные раскладки


(с) Киккарин, 2002-2003
sairan @ computer.org

Опубликовано - 04.11.2002
Последнее изменение - 11.12.2006

на страничку автора....