flag_ru

Қазақ тілінің кодтамалармен көрген бейнетіміз, себебі - стандартты бұзған оңбайды

(техникалық пайымдама + кодтаманы түзету программасы)

Төмендегі (жоғардағы да) жазылғаны автордың жеке пікірі, жазылғанмен ешбір міндеттер мен кепілдіктер берілмейді, сонымен төменде келтірілген мәліметтерді қолданғанның немесе керісінше қолданбағаннын оқыс салдары үшін автор жауап бермейді; аталып кеткен сауда белгілер әрбірі өз компаниялардың меншігі; әзіл болса конституциямыз берген әзілдесу құқығына негізделген, және т.б. с.с.

Бұл мақаланы оқып шықсаңыз, білетініздің қортындысы мынадай:
  1. Қазақ тілінің дұрыс 16 биттік кодтамасы - Unicode, яғни (жуырда шыққан) Windows'2000 және XP-де қазақ тілі үшін қолданатың, және  KazWin (біраз уақыт бойы) қолданып жүрген кодтамасы.
  2. Елде түрлі қазақ тілінің жалған Unicode кодтамадағы қаріптер (шрифттер) кең тарап кетті.
  3. Стандарттан тыс кодтамасының қайсы сізге кездескенін анықтауға болады (осы мақаланың 6.1-6.4 тармақтарын оқып)
  4. Анықталған кодтамадағы құжатты дұрыс (XP мен KazWin үлесімді) кодтамасына айналдыру үшін арналган программасын көшіріп алып, жағдайды жөнге келтіруге болады. Мақаланың 6.1-6.4 тармақтарын қараңыз.
  5. Мақаламызда біраз анықтама мәліметтерді таба аласыз.
  6. Стандартты бұзған оңбайды деген ойға келесіз деген үміттеміз...
Эпиграфтың орнына:
Қойшы көп болса қой арам өледі

Мазмұны
1. Кіріспе сөз және бұл мақала кімге арналғаны туралы
2. Бұл маселеге қалай кірісіп кеттім
3. Техникалық кіріспе
4. UNICODE / ISO-10646 он алты биттік кодтама
5. Сегіз биттік кодттамалар
5.1. Орыс тілдің сегіз биттік кодтамалары
5.2. Қазақ тілінің 8-биттік кодтамалары
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 KaZ жалған Unicode шрифттер. Бұлармен не істеуге болады?
6.3 KZ жалған Unicode шрифттермен күресу
6.4 KZ-bis жалған Unicode шрифттер және оларды жөнге келтіру
7. Қосымша #1. Мақалада аталған кестелер тізімі
8. Қосымша #2. Түрлі кодтамалардағы жалған Unicode шрифттер тізімі

1. Кіріспе сөз және бұл мақала кімге арналғаны туралы.

Казір (казір дегеніміз осы жолдар жазылған кезі - 17.09.2002, бірақ мақаланы жобалаған кезіміз бұдан әлдеқайда бұрын) бүкілімізді жалықтырған компьютердегі қазақ тілінің бір бірімен сәйкеспейтін кодтамалары көбейіп кеткені. Бұл бірыңғай стандарттын болмағанның салдары деген пайымдауы, расымызды айтсақ, таза шынға жатпайды, себебі казір негізді болып 16-биттік кодтамасы табылады, ал бұл 16-биттік кириллицаның (нақты айтсақ, қазақ тілі қолданатын кеңейтілген кирилицаның) кодтамасы халықаралық стандарт ретінде 90-шы жылдардың басынан бері кабылданған, яғни 1997 жылы осы стантарт кең тарала бастағанда, жағдайды түзеп алуға мүмкіндік болған. Бірақ содан бері жағдай тек шиеленісе берді. Казір, қазақ тілін сәл-пәл болсада колдайтын операциялық жүйелердің соңғы версиялардың шығуымен жағдай жөнге келер деген үміт пайда болды, бірақ жөнге келу үшін жүздеген мың қолданушыларға жөн-жобасын түсіндіріп, мегабайттап (килобайттар ғана ма?) жиналып қалған құжаттарды дұрыс кодтамаға ауыстыруга көмектесіп жіберу керек. Осы мақаланың мақсаты, осы жүздеген мыңдарға көмектесетін, техникалық егжей-текжейге іңлуден айянбайтын мыңға жағдайды түсіндіру. Ал жөніне жеткен мың маман қалған, техникалық маселенің үтір-нүктесін кызық көрмейтін, жүздеген мыңдарды жөнге келтіреді деген үміттеміз.

2. Бұл маселеге қалай кірісіп кеттім (қызық болмаса бірден 3-ші тармаққа секіріп оқи беріңіз)

Осы мақаланың авторы баяғы MS-DOS және Windows 3.x заманнан бастап қазақстандырушы драйверлармен озінің және айналымдағылардың ыңғайын қөздеп шұғылданған еді. Windows’95 шыққанымен - осы жүйесіне де жасауға мәжбүр болдық. Достар Windows NT 4.0 -ге бірдеме жасап берші дегенге "бірдемесін" жасап бердік. NT жүйесі негізінде Unicode-ке сүйенген жүйе болған сон, Unicode стандартпен сонда таныскан едім. Казір консорциумның unicode.org сайтында әдемі pdf-форматтағы альбомдар аркылы оңай танысу болады, ал сол "баяғы" артта қалған 90-шы жылдардың ортасында ftp-серверінің бір бұрышында жәй сөзбен жазылған кириллица кодтамасын әзер табуға болатын. Сонаң соң КСРО халықтардың кириллицаларын зерттеп отыру керек еді, мысалы "schwa" деген сөздің артында біздін баяғы әріпі жатқаны анықтау үшін біраз уақыт кеткен еді ("...шіркін-ай, казіргі жастар жеңіл-арзан дәуірде өмір сүреді-ау, біз-ші, жалаң-аяқ, жалаң-бас, түн ортасында, боран-дауылға қарамастан, ауылдағы жалғыз-ақ Интернеті істеп тұрған селпоға барушы едік...Казіргі бостан-босқа кәмпитердегі ойындарға әуес жастар бізді қалай түсінсін...").
1997 жыл шамасында Windows-тың бағдарламалары Unicode кодтамасына көшкен сон Windows'9x-ке де Unicode пен қазақша жұмыс істеуге мүмкіндік жасадық. Басқа қазақстандырушыларды істейтін әріптестерім де осылай істегеніне күмәнім жок еді. Бірақ Windows'2000 шыққан сон э-мейлден "KazWin-ніңіз Windows'2000-пен үлесімді ме?" деген сұрақтар келе бастады. Бұндай сұрақтар неден шыққанын түсінбей "Әрине, үлесімді, Unicode ғой, стандарт деген Африкада да стандарт" деп жауап бере бердім... Сонан соң кейбіреулер KazWin-мен үйлесімсіз 16-биттік шрифттер мен мәтіндерді, "Мынаумен не істеуге болады?" деп маған жібере бастады. Африка бір бөлек, Қазақстан бір бөлек екенді сонда ғана түсіндім. "Бөлегіміз" төменде 6-шы тармақта пайымдалған. Жалған Unicode шрифттер кеңінен кең тарап кеткен екен, бұл жағдай үлкен мәселеге айналып, жәй қолданушылар адасуда, стандарт бар екен туралы немесе білейді, немесе стандарттан тыс құжаттар көбейітіп алып, қалай жағдайды жөндеуді білмей жүр. Өзім де бұл жағдай туралы біраз бейхабар болғам - менің айналамдағылар, әрине, KazWin-ды қолданады да ешбір қыйыншылық көрмейді. KazWin-ды көп қазақстандырушылардың бірі деп санап жүрсем, ол біраз уақыт стандартты ұстанған (яғни казіргі Win2k мен WinXP үйлесімді) жалғыз ба, әйтеуір бірінші болғаны анықталды. Осы мақала, құжаттың кодтамасын түзететін компьютер программаларды ұсынып, бұл қолайсыз жағдайды жөндеуге арналған бір талпынысым.
Ал, енді кәсібімізге кірісейік...

3. Техникалық кіріспе

Компьютерде сақталған мәтіннің әрбір әріпі бір санмен (кодпен) берілетіні бәріңізге мәлім шығар. Сан компьютерде екілік жүйе түрде, яғни "0" және "1" биттер тізбегі арқылы жатталады. Дәстүр бойынша сегіз бит тізбегі "байт" деген ат алып, компьютерде ең ұсақ ақпарат алмасу бөлшегі болып табылады. Жуырдағы заманда ғана компьютерінің жад бөлшегі едәуір қымбат болғанда мәтінді кодтау үшін 8-бит кодтама жүйесі ғана қолданылатын, нақты айтсақ, әрбір әріпті, немесе жалпы символды жаттау үшін бір байт бөлінетін. Бірақ 8 битттен құрылатын байт небір 256 түрлі бит өрнек құралады да, сонымен сол шамада ғана түрлі символдарды кодтай алады. Соның жартсы - бірінші 128 сан, ағылшын тілінің аріптерді және біршама (американдықтардың пікірінше) қажет символдарды беруге (кодтауға) арналған (1-ші Кестені қараңыз). Бұл компьютер тарихы тұрғыдан "көне" заманның мұрасы, сол кездерде компьютерлер тек қана ағылшын тілде (американдық акцентпен) "сөйлейтін" де 7-биттік код жеткілікті болатың. 7 бит дегеніміз тура 128 символ кодтай алады. Бұл 128 символдар кестесі ASCII стандарты деп аталады ("аскии" деп оқылатын American Standard for Computer Information Interchange дегеннен қысқартылуы). 8 биттік 256 символдардың екінші жартсы түрлі елдердің қажетіне қарай бейімделеді. Мұнда жергілікті халықтар өзінің бірінші жартсына кірмей қалған латын әріптерін орналастырады, немесе, жергілікті әліппесі латын емес болса, түгел әліппесін орналыстырады, мысалы иврит болса иврит, кириллица болса кириллицаны. Бір қатар код парақтар (codepage) деп аталатың, 8-биттік кестелер, халықаралық стандарттау ұйымдар жағынан стандартталған, мысалы ISO (International Standard Organization) бекіткен ISO-8859 стандарттар қатары, сол арадан ең кең таралғаны ISO-8859-1, басқаша Latin-1 деп аталатың кестесі (2-ші Кестені қараңыз), Microsoft фирмасы бұл кестесін өзінше 1252 деп нөмірлейді. Кең таралған себебі - бұл кесте бір қатар ықпалы еуропалық тілдер үшін қолданылады - француздардан бастап испан тілге дейін (жуырдағы орфографиялық реформадан кейін немістерге де жарайтын сияқты, анық білмеймін).
Казір компьютерлік жады арзандаған кезде компьютерлердің жад бөлшектермен жабдықталыуы едәуір ұлғайды, сондыктан бір символды екі байтпен (16 бит) кодтау жүйесі кең тарала бастады. Он алты бит 216 = 65536-ға дейін түрлі символ кодтауға мүмкіндік береді. Бұл жүйе Дүниеде бар бүкіл әліппе-жазулардың әріп-символдарға жеткілікті, бірнеше мың кытайлардың иероглифтермен бірге қоса.

4. UNICODE / ISO-10646 он алты биттік кодтама

Жақсы жаңалық: 16-биттік кодтама стандарты казір біреу-ақ қана. Ол бұл шаруаға тиісті компаниялар тобы құрған консорциуммен қабылданып дамыту етуде. Консорциумның аты Unicode ("юникод" деп оқылады). ISO-10646 деген (толық атауы ISO/IEC-10646) стандарт та іс жүзінде сол стандартқа тең (сирек кездесетін жағдай, кодтамаға қатысты істерде бір-бірімен келіспейтін жүйелерді ұсынып, қарсы қойып, жағдайды шиеленістіріп жіберуі - үйренішікті жағдай).
Кириллица жазу әріптерге Unicode стандартта 0x0400-0x04FF кодтар диапазоны бөлініп, 90-шы жылдардың басында бекітілген. Бұл кестеге казіргі қазақ әлипесіндегі бүкіл кеңейтілген кириллица әріптері де кірген. 3-ші Кестеде осы мақалаға қатысты символдармен олардың Unicode кодтары келтірілген.
Айтпақші, Unicode кестесінің басы, яғни 0x0000-0x007F кодтары, жоғарыда аталған баяғы "көне" ASCII орын алған, ал келесі 128 орын (0x0080-0x00FF диапазоны) да жоғарыда таныстырылған Latin 1 орналасқан.
MS WinWord’97 -тан бастап, бұл әйгелі программаның версиялары теқ қана 16-биттік Unicode кодтамалы шрифтермен жұмыс істейді. Казір Unicode стандартқа дүниеде қолданатын басым көпшілік әріп пен символдарды еңгізілген, бірақ әрбір нақты шрифттың *.ttf файлында, әрине, стандарттағы символдарының бәрі де түгел емес. Кириллицаны алсақ, Windows операциялық жүйелердің неғізғі үш шрифты (Arial, Times New Roman, Courier New) Windows XP шыққанға дейін тек қана орыс, украин, белорус, сырп (серб), македон және болғар тілдерге ғана жеткілікті әріп жиынтығы бар еді. Бірақ Windows'98 -дің заманынан бастап Microsoft-тың сайтында осы неғізгі шрифттердің жаңа #2.82 нұсқалары тегін көшіруге ұсынылатын. Осы жаңа нұсқаларда Unicode кодтамадағы қазақ тілдің БҮКІЛ әріптері бар. Жуырда Microsoft бұл шрифттерді сайтынан алып тастаған - бәлкім, жаңа шрифттер инсталляторының құрамына кірген Windows XP-ге жол ашу үшін.
Әрбір дұрыс шрифтте қазақ тілінің әріптері 3-ші Кестеде көрсетілгендей ғана стандартты кодтарға ие болуға тиіс. Осы стандартты ұстанбағандықтан казіргі қазақ тілдегі мәтіндердін кодтамаларының шатастыруы шиеленісіп кеткені. Шиеленісуі қалай пайда болғаны төменде түсіндіріледі.
Айтпақшы, нақты бір шрифтте бір әріптің бейнесі болмағанда сол әріптің сөздегі орнында бос шаршы пайда болады. Міне мынандай . Бұл қазақ тілдегі мәтіні дұрыс Unicode-те жазылған, бірақ қолданып отырған шрифтте қазақ тілінің ерекше әріптердің бейнелері жоқ жие кездесетін жағдайда болады. Мысалы, версиясы 2.82-тен төмен Arial немесе Times New Roman шрифттерді қолданғанда болады.

5. Сегіз биттік кодттамалар

Болашақта 16-биттік кодтамаға түгел көшетін болсақта, жыл сайын өшіп бара жатқан 8-биттік кодтамалар да әлі қолдануда. Сонымен қатар 16-биттік кодтамамен шиеленісуі қайдан пайда болғаның түсіну үшін, мәселені тудырған 8-биттік кодтаманың тарихын білу керек.

5.1. Орыс тілдің сегіз биттік кодтамалары

"Мәтініңіз кай кодтамасында?" деген сұрақты француз болса түсінбес те, себебі оларда бүкіл жерде тек қана бірден-бір Latin-1 кодтамасы қолданылады. Орыс компьютердің қолданушының жағдайы қыйынырақ: бұларда кемінде төрт кең тараған 8-биттік кодтамасы қолдануда (шынында одан да көп, бірақ әзірше осымен шектелейік). Жоғардағы французда бірден "Мұндай молшылығыңыз қайдан?" деген сұрақ туады. Жауап: бұл тарихи қалыптасқан жағдай - кодтамалардың көпшілігі, "кириллицаның кодтамасы бір болса болсын, бірақ бұл бірі біздікі болсын" деген ниетті шетел команиялардың "сыйлықтары". Осы төртті реттеп қарастырайық.

Біріншісі (жасы бойынша емес, реті бойынша) - 866 код парағы деп аталған кодтама (4-ші Кестені қараңыз). Бұл кодтаманы стандарт ретінде ұсынған - IBM фирмасы (басқа мәліметтер бойынша, керсінше КСРО ҒА Есеп Орталығы). Орыс тілінің кодтамасы болып MS-DOS операциялық жүйесімен бірге кең таралған. Жәй атағанда "ДОСовская кодировка" деп немесе кейбір сауатсыздықтар, MS-DOS-тың әйгелі Нортонның интерфейсін еске алып "Нортоновская кодировка" деп атайды. Бұл қолдануы тарылып бара жатқан кодтама секілді. Кейбір программаларда ескі версияларымен, немесе жиналып қалған құжаттармен үйлесімдік үшін сақталып келеді.

Екінші кодтама - 1251 код парағы (5-ші Кестені қараңыз). 1251 мен 866 сандардың ешбір қосымша мәні жоқ - фирмадағы іс құжаттардан шыққан жәй цифрлар. 1251 кестесі Windows операциялық жүйелерінің негізғі 8-биттік кириллицаның кодтамасы. Сол себептен Windows-тың арқасында бұл қазір ең кең таралған 8-биттік орыс тілінің кодтамасы.

Үшіншісі KOI-8R (6-ші Кестені қараңыз). Казіргі қолданатын кирилицаның кодтамаларының арасында ең ескісі. Баяғыда ГОСТ ретінде бекітілген. UNIX және UNIX тектес платформада дәстүрлі негізгі орыс кирилицаның кодтамасы. Сол себептен жаңғырып Интернет желісінде орыс тілінің негізгі кодтамасы болған. 1251 кодтамасының негізгі бәсекелесі.

Төртінші кодтамасы ISO-8859-5 (7-ші Кесте). – менің ойымша жаңсақтықтың дәл өзі. Кеңес үкімет дәуірінде ISO ұйымның өзі, ешбір кириллицаның қолданушылардың қатысусыз сияқты, стандарттаған кодтама. Бұл кодтаманы біреу өз ықтиярымен қолданғанды кездескен жоқпын. Үлкен өндіріс көлемдегі ақпарат базаларда қолдананылады дегенді естігем. ISO-нің беделімен тіреліп тұрған соң, шетел программалық жасауын өндірушілер бұл кодтаманы ISO-8859-1 секілді міндетті дегені мә, әйтеуір жие программаларына қыстырып жүреді.

Apple фирмасының "Mac" ("мак" деп оқылады) компьютерлердің кириллица кодтамасын (әрине, жоғардағылардан бөлек) мұнда қарастырмай қояйық - өзге қалғандарды атамау үшін... (Тағы біразы бар!)

5.2. Қазақ тілінің 8-биттік кодтамалары

Қазақ тілінің CP1251 кестемен үйлесімді 8-биттік кодтамасының стандарты 2002-шы жылда ғана, 10 жылға кешігіп, артық жәрияусыз қабылданған.Осы 10 жылда бір қатар компьютерлік бағдалама жасаушылар сан алуан кодтамаларын ұсынып шығаруды үлгерген. Қазақ тілі орыс тілімен қатар кириллицаны қолданған сон, ұсынған кодтама кестелері орыстардың кодтамаларымен үйлесімді болатын. Жоғарыда айтылғандай орыс тілде де бірыңғай кодтамасы болмағандықтан, әрбір орыс кодтамасынан бірнеше түрлендірген қазақ нұсқалар өрбіп, мүлде көбейіп кету қауыпы бар. Бұл қауыпты жағдай орын алған да сияқты.
MS-DOS (866) кестесінен өрбіген қазақ кодтамаларға, 866-дың өзектілігі кеткен сияқты болғандықтан, мұнда тоқталмайық. Алдымен 1251 кестеден өрбігендерді қарастырайық.

5.2.1. CP1251-мен үйлесімді қазақ тілінің кодтамалары. KazWin-ның кодтамасы.

CP1251 кестесіне үңіліп көрейік. Орыс әліппесі 0xC0-0xFF диапазонда (соңғы төрт жолдарында) орналасады. Бұдан тыс тек қана Ё мен ё (кодтары 0xA8, 0xB8) әріптері орналасқан. Үлесімді код парағында бүкіл орыс әріптерді орынында қалдырған жөн. Бұл біржолата болғар тілімен үлесімдікті сақтап қалады. Қазақ әріптермен ауыстырылмақ болатындар, бірінші кезекте , , деген македон әріптері, , , , деген сырп-македон әріптері, және , таза сырп әріптері. Екінші кезекте, украин тілімен үйлесімдікті жоғалтып, бұл тілде казір сирек қолданылатың әріптің орнын басып алуға болады, сонан соң жие қолданылатын украин , әріптерді ауыстыруға болады, ал бұл да жетпесе, белорус әріптің орнын алмақпыз. Украин-белорус кириллицаның әріпі қазақ тілінде де бар, оны өз стандартты орнынында қалдырған жөн. Әріптерді ауыстырғанда бас әріпті бас әріппен, кіші әріпті кіші әріппен аустырған жөн, сонымен қатар ауыстрылып жатқан әріптін пішіні ауыстырып жатқан әріпке сәл болсада ұқсас болған да жөн. Осындай оймен баяғы Windows 3.xx кезінде KazWin қазақстандырушы программалық жасауы қолданатын (CP1251-k деп аталған) 8-биттік кодтама (8-ші кестені қараңыз) пайда болған. KazWin-ның Windows'95/98, Me, NT, 2000, XP-лерге арналған нұсқалары Интернет арқылы 1997 жылдан бастап еркін таралған соң аталған кодтама Қазақстанда біршама кең таралған. Алайда, бұл Қазақстанда таралған жалғыз CP1251-мен үйлесімді 8-биттік кодтама емес. KazWin-ның кодтамасынан тыс Интернетте келесі кодтамалары табылды. Табылған кодтамалардың авторлары және олардың артында қай компаниялар тұрғаны туралы мен бейхабармың, шынын айтқанда мұны білу осы мақаланың мақсаты тұрғыдан қажет те емес, ал атап-сілтеу үшін бұларға келесі атауларды (шрифттердің атауларындағы кездесетін жұрнақтарға сүйеніп) берейік:
1) "Kaz" кодтамасы
2) "KaZ" кодтамасы
3) "KZ" кодтамасы
4) "KZ-bis" кодтамасы
Соңында, бүкілінен соң шыққан ресми СТРК 1048-2002 стандарты, қысқа түрде бұны RK1048 деп атайық.
Бұдан да басқа кодтамалары бар шығар, бірақ осыларды көп қиналмай Интернеттен аулап алғандықтан, бұл төрт кодтамалар ең кең таралғандар деген ой туады. Бұларды қарастырып пайымдамаларын берейік.

5.2.1.1 Kaz кодтамасы

Kaz кодтамасы 9-ші Кестеде келтірілген. Қазақ тілінің косымша әріптері 0xB0-0xBF қатарында, әріптерден басқалары әліппеде кездесетін ретімен орналасқан. Былай орналастырып кішентай ё мен кириллицаның мен әріптердің орнын басып, оларды кестеден мүлдем құртып жіберген. Соңғы екеуінің орынында латын I мен i әріптер қолданылады, мұндайы тәртіпті өрескел бұзушылық - бір сөзде жазу түрлерін шатастыруға болмайды, мәтіндерді компьютермен өндіру алгоритмдерге кедергі болады. Тағы бір келіспеушілік: 0xB6 орынға қазақтың әріпі койылғаны. Бұл орындағы белгі жазу бағдарламаларда жол соңын белгілейді, сондықтан мәтіннің басылмайтын белгілерді көрсететін режимында, жоқ жерде әрбір жолдың аяғында осы әріп шыға келеді.

5.2.1.2 KaZ кодтамасы

KaZ кодтамасы 10-ші Кестеде келтірілген. Қай оймен әріптерді орналастырғаны түсіну қиын. Қазақ әріптерді кездейсоқ орындарға қоя салғанға ұқсайды.

5.2.1.3 KZ кодтамасы

KaZ кодтамасы 11-ші Кестеде келтірілген. Әріптерді орналастыру жобасы KazWin-ге ұқсас. Сол себептен біраз әріптерінің кодтары KazWin мен бірдей. Бірақ біразы аустырылып, енді қалған сырп-македон әріптерінің орындары берекесіз қалып жатқанын елемей, әріптердің орнын алып белорус тілімен үйлесімдігі жойылғаны сәл орынсыз секілді.

5.2.1.4 KZ-bis кодтамасы

Біріншіcінен айыру үшін KZ-bis деп аталып отырған тағы бір KZ кодтамасы12-ші Кестеде келтірілген. Бұл кодтамадағы қазақ әріптерінің орындары бір ресейлік фирманың PT154 (Asian Cyrillic) деген код парағына сәйкес. Аталған код парағы толық 13-Кестеде көрсетілген. Әрітерді орналастыру жобасы KazWin- дегідей, сол себептен кейбір әріптерге берілген кодтарының ұқсастығы. Башқұрттан бастап тәжікке дейін - өте көп тілдерді қамтуға арналып, қойылған мақсат едәуір кеңірек болғандықтан, кейбір қазақ әріптерге бөлінген орындары бастапқы CP1251 кестеде "әріп емес" орындарға қойылған. Жалпы айтқанда бұл қате емес, бірақ CP1251 код парақпен жұмыс істеуге бейімделген Windows мұндай жағдайда кейбір қате жібереді, сондықтан жүйе қазақ әріптерді әріп деп санау үшін программист жағынан тиісті жерге өзгеріс еңгізіп, кейбір шара қолдану қажет болады.

5.2.1.5 KZ-1048 кодтамасы

Көптен бері  күткен ресми түрде жуырда қабылданған қазақ тілінің 8-биттік кодтама стандарты Кесте A-да келтірілген. Стандарттың авторлары, қазақ тілінің күллі әріптерді орналастыру үшін сырп-македон әріптерінің орындары жететіне қарамастан, бүкіл орыс тілінен басқа (украин, белорус, сырп, македон) тілдермен үйлесімдіктерді жойып жіберген. Украина мен Беларусь елдерімен қатынастар бар екенді және Қазақстанда біраз украиндыктар тұратының ескеріп, бұл бір-екі тілдерімен үйлесімдікті қалдыруға болар еді - бәрі-бір бірнеше сырп-македон әріптердің орындары бостан-босқа қалып жатқанда. Стандарттың авторлары жан-жақты ойлап, жүйелі жобаламаған сияқты (уақыт жетпей қалған ғой). Енді міне, осы стандартпен өмір сүреміз...
Oracle-да істейтін А.Веремеевтің көмегімен (рахмет оған!) бұл кодтама IANA.org ұйымында тіркелді. Осы мақалада осы кодтама үшін бұрын қолданған RK1048 деген атауы синоним (alias) ретінде тіркелген.

5.2.2. KOI8-С кодтамасы

KIO8-C кодтамасын (14-ші Кестені қараңыз) атап кетпесек 8 -биттік кодтамалар туралы хикаямыз толық болмас. Бастапқыда аты бір болып соңында, бәлкім KOI8-O, болып кеткен көне орыс жазуға арналған кодтамасымен шатастырып алмаңыз. KOI8-C бір Испаниядағы Кавказға жан ашушы (C әріпі Caucasian - Кавказдық дегені) ұсынған. Осындайда жақсы ниет сәйкес біліммен ұштаспай қалады ғой - кестеде тағы бір әріпке (Unicode #0x04C0 – бұл латын I (0x0049) ден де кириллик (0x0406) ден де бөлек, кіші сыңары жоқ, стандартты атауы "palochka" ) орын табылса көп кавказ тілдерге жарар еді. Кавказдікі десе де кодтамада кавказға ешбір қатысы жоқ, қазақ тіліне ғана тән әріпі бар. Байқағанымға қарай бұл кодтама кең таралмаған секілді, UNIX -тердің арасында әзірше тек OpenBSD-де ғана (бір катемен) жүзеге асырлғанын таптым (қолдануда болса катесін біреу түзе етер еді). Қазақстанда ешкім бұл кодтамасын қолданбайды деген үміттеміз - жәй де аз емес орыс кодтамалардың әрбірін бінеше қазақ тармақтарымен өрбітіп жүреміз бе? Менімше біреуін қалдырып, француздар секілді өмір сүрген артық.. Мұндай мүмкіндікті жоғалтып алдық  па?

6. Қазақ тілінің көбейіп кеткен жалған-Unicode кодтамалары

Ал енді көбейіп кеткен, атауында Kaz/Kazakh, KaZ, KZ жұрнағы немесе алдында KZ белгісі бар, жалған-Unicode шрифттері қайдан пайда болғаның түсіндіруге дайынбыз. Тек қана Unicode стандарттағы шрифттермен жұмыс істейтін MS WinWord'97 шыққанда, 8-биттік кодтамалардың заманы біте бастады. Казақшалаушы драйерлердің істеген өнертабушыларымыз Windows-тағы 8-биттік кодтарды 16-биттік кодқа және керсінше айналдыратын жүйелік кестелерін дүрыстап жетідірудің орнына, оңай жолмен кеткен, яғни қолындағы 8-биттік шрифттерін CP1251-ден Unicode-қа сәйкестік кесте бойынша айналдырырып алған. Сол кезде сүйтетін TTFCONV.EXE деген бағдарлама қолдан қолға таралып жүретін. Сонда 8-биттік кестеде CP1251-кестедегі сырп-македон әріптердің орнына қойған қазақ әріптер Unicode шрифтте сол сырп-македондықтарын кодтарына ие болған. Ал CP1251 кестеде қазақ әріпке берілген орын бір техникалық символдікі болса, ол бейшара әріп Unicode кестесінде мүлде 0x2300-0x23FF секілді техникалық символдарының диапазонына ұшып кеткен болатын. Осылай жалған-Unicode, яғни қазақ әріптері бөтен, стандарттан тыс, кодтарға ие шрифттер пайда болған. Стандарт бойынша күллі кириллица әріптер 0x0400-0x04FF диапазонда болу керек - қазақ әріптер өз кодтарымен, сырп-македон әріптері өз кодтарымен, 3-ші Кестеде көрсетілгендей.
Ол аз болғандай, кейбірлер стандартты бұзсақ түбегейлі бұзайық дегендей, өзінің 8-биттік кестелерін Unicode кестесінің басына, яғни CP1252 (Latin 1) орнына, тұтастай орналастырып қойған. Бұл орыс кодтамасымен де үйлесімді емес. Сонда күрес-тартыс не үшін болғаны?
Ал дұрыс жолы қайсы болган? Пернетақта драйверін ТОЛЫҚ жетілдіру: жәй ғана пернетақта сәйкестікпен шектелмей 8-биттік кодтарды 16-биттік кодқа және керісінше айналдыратын жүйелік кестелерін өзгертуe керек еді. Немесе басты ауыртпай дайын KazWin-ды қолдану керек еді.

6.1 Жалған Unicode Kaz шрифттер және олармен күресу тәсілі

Атында Kaz немесе Kazakh деген жұрнағы кездесетін жалған Unicode шрифттерінің кодтамасы 9-шы Кестеде келтірілген. Әрбір әріптің үстінде юникоды жазылған. Әріп бөтен (стандарттан тыс) кодтың астында тұрса, дұрыс емес код саны қызыл түспен белгіленіп койылған. Kaz шрифттерде CP1252-ның орнына CP1251-ның кириллицаны орналыстырғандықтан, мұнда бүкіл кириллица бөтен кодтарда тұр. Kaz шрифтпен жазылған мынандай мәтін:
:Sample.gif

шын Unicode стандартты шрифтпен жазылғанда төмндігіндей болып көрінеді:
SampleKaz.gif
Мұндай мәтінді шын Unicode стандартты кодтамаға аударуға KKReCode багдарлама бағытталған. Оны мынау орынан көшіріп алуға болады:2KReCode.exe2KReCode.exe . Бағдарламаның таңдаулар панелі бұл жағдайда мынандай болу қажет

:

6.2 KaZ жалған Unicode шрифттер. Бұлармен не істеуге болады?

Бұл оғаш кодтама. 8-биттік прототипі қай оймен жобаланғаны түсініксіз болғаны аздай, бұл кодтаманың кестесі ЕКІ кестеден құрастырлылған! Мысалы кириллицаның A әріпі өзінің 0x0410 юникодка қоса бөтен 0x00C0 кодқа ие. Солай басқа да әріптер екі-екіден. Қазақ әріптері біресе екеу, біресе жалғыз - бұны түсіндіру қиын, өзіңіз 10-шы Кестеден қараңыз. Сонымен KaZ шрифтпен жазылған мынау үлгілі мәтін:
Sample.gif
шын Unicode стандартты шрифтпен жазылғанда былай болып көріне алады да:
SampleKaZ1.gif
ішінде екінші кестесі болғандықтан былай да болып көріне алады:
SAmpleKaZ2.gif
Бұл кодтамада жазылған мәтінді шын Unicode стандартты кодтамаға аудару үшін KKReCode багдарламаны көшіріп алуға болады: :2KReCode.exe2KReCode.exe . Бағдарламаның таңдаулар панелі бұл жағдайда мынандай болу қажет

6.3 KZ жалған Unicode шрифттермен күресу

Байқағаным: ескі KZ жұрнақты (Times New Roman KZ секілді) жалған Unicode шрифттер (11-ші Кесте) мен қатар, дәл осылай аталған "түзетілген" шын Unicode шрифттер де маған кездескен еді (біреу KazWin-ден "алған" 8-биттен 16-битке және кері айналдыратын кестелермен коса, өзі жасаған пернетақта драйвермен бірге таратып жіберіпті). Жалған KZ шрифтпен жазылған мынау үлгілі мәтін:
Sample.gif
шын Unicode стандартты шрифтпен жазылғанда былай болып көрінеді::
SampleKZ.gif
Бұл кодтамада жазылған мәтінді шын Unicode стандартты кодтамаға аударатың KKReCode багдарлама міне: 2KReCode.exe2KReCode.exe . Бағдарламаның таңдаулар панелі бұл жағдайда мынандай болу қажет

6.4 KZ-bis жалған Unicode шрифттер және оларды жөнге келтіру

Бұл шрифттердің аттары көбісіне KZ-ден басталады (KZ Arial секілді). Мынау кодтама кестесі: 12-ші Кесте. Жалған KZ-bis шрифтпен жазылған мәтін үлгісі:
Sample.gif
шын Unicode стандартты шрифтпен жазылғанда былай болып көрінеді:
SampleKZbis.gif
Бұл кодтамада жазылған мәтінді шын Unicode стандартты кодтамаға аудару үшін мынаны қолданыңыз: 2KRECode.exe2KReCode.exe . Бағдарламаның таңдаулар панелі бұл жағдайда мынандай болу қажет

Мақалада аталып кеткен кестелер толық тізімі Қосымша #1.

Ескерту. Маған кездескен жалған Unicode шрифттердің тізімі міне-Қосымша #2  Аты бір, заты (кодтамасы) бөлек шрифттер кездесетініне назар аударыңыз. Шын Unicode стандартты шрифтпен жазылғанда кай әріптің орнына қай символ тұрғаның мұқият қарап, қайсы кай кодтама екенін айыруға болады..

Әзірше болдым. Істеріңізге сәт!

Оы тақырыпқа жақын мақалаларым
"Қазақ тілінің веб-сайттардағы кодтамасы туралы"
"Қазақстандық пернетақта сәйкестіктері"
:
(с) Киккарин, 2002,2003
sairan@computer.org

Мақала жарық көрген күні - 04.11.2002
Соңғы өзгеріс- 11.12.2006

автордың парағына....