Мәтіндік ақпаратты кодтау принциптері
Пернетақтадағы «А» батырмасын бассаң, экранда «А» әрпі шығады. Бірақ компьютер бұл әрпті қалай «есінде сақтайды»? Ол зат емес, тек сан ғана біледі! Демек, әр әріп, тыныс белгісі, тіпті бос орынның өзі белгілі бір санмен «шифрланған». Бүгін дәл осы мәтінді санға айналдыру принциптерін — ASCII-ден бүгінгі Unicode-қа дейінгі жолды үйренеміз.
Компьютер тек санды өңдей алады, сондықтан мәтіндегі әрбір символ (әріп, цифр, тыныс белгісі) санмен «алмастырылуы» керек.
Ақпаратты кодтау — ақпаратты бір түрден екінші түрге (мыс. символдан санға) көшіру процесі. Кодтық кесте — символдар мен оларға сәйкес сандардың реттелген тізімі.
Алғашқы компьютерлерді ағылшын тілділер ойлап тапқандықтан, бірінші кодтық кесте тек ағылшын алфавитіне (26 үлкен + 26 кіші әріп), цифрларға, тыныс белгілеріне және кейбір арнайы символдарға арналды — барлығы 100-ден астам символ.
ASCII (American Standard Code for Information Interchange) — латын әріптері мен символдарды сандармен алмастыратын алғашқы стандартты кодтау. Бастапқыда 7 биттік (2⁷=128 символ), кейін 8 биттік (1 байт, 2⁸=256 символ) болды.
| Ондық код | Оналтылық код | Символ |
|---|---|---|
| 32 | 20 | (бос орын) |
| 48 | 30 | 0 |
| 65 | 41 | A |
| 97 | 61 | a |
| 90 | 5A | Z |
ASCII кестесі екі бөліктен тұрады: стандартты бөлік (0–127) — латын әліпбиі мен басқару символдары, және кеңейтілген бөлік (128–255) — ұлттық әліпбилерге (орыс, қазақ) арналған, елге қарай ӘРТҮРЛІ болып толтырылады.
ASCII-дің кеңейтілген нұсқасы — ANSI кодтау, оған әр тілдің өз әріптері қосылады. Windows-1251 — орыс алфавитіне арналған танымал ANSI мысалы.
KZ-1048 — 2002 жылы қабылданған, Windows-1251-мен үйлескен қазақ тілінің ресми кодтау стандарты. Онда қазақ әліпбиіне тән қосымша әріптер (Ә, Ө, Ұ, Ү, Қ, Ғ, Ң, Һ, І) кодталған.
Қызығы, орыс тіліне арналған кодтаудың өзі тарихта бірнеше рет өзгерген: 70-жылдары КОИ8, 90-жылдары MS DOS-та CP866, Apple-де жеке Mac кодтау, халықаралық ISO 8859-5. Осындай әртүрліліктің өзі бір үлкен мәселе тудырды — «қай кодтауды қолдансақ, бәрі бір-бірімен үйлесе алады?»
Ондаған әртүрлі ұлттық кодтаудың бәрін жаттап, сәйкестендіріп отыру мүмкін емес еді. 1991 жылы «Юникод консорциумы» бір рет әрі мәңгілікке шешетін стандарт ұсынды.
Юникод (Unicode) — әлемнің БАРЛЫҚ жазбаша тілдерінің әліпбиін біріктірілген түрде қамтитын кодтау стандарты. Алғашқы 128 символы ASCII-мен дәл сәйкес келеді — сол себепті ASCII мәтіндер Unicode-та да дұрыс оқылады.
| Кодтау түрі | Символ ұзындығы | Қолданылу аясы |
|---|---|---|
| UTF-8 | Айнымалы (1–4 байт) | Интернет, веб, операциялық жүйелер |
| UTF-16 | Айнымалы, кемінде 2 байт | Windows |
| UTF-32 | Тұрақты 4 байт | Барлық мүмкін символды толық қамту |
16-биттік Юникод әр символға 2 байт (16 бит) бөледі — бұл N = 2¹⁶ = 65 536 символды кодтауға мүмкіндік береді! ASCII-дің 256 символымен салыстырғанда бұл орасан зор кеңею — енді қазақ, қытай, араб әрпі де, тіпті нота белгілері де сыяды.
Кодтау түрі мәтіннің КӨЛЕМІНЕ (файл өлшеміне) тікелей әсер етеді — символ санын кодтағы бит санына көбейту жеткілікті.
Берілді: «Сен жоғары сынып оқушысысың» хабарламасы, ұзындығы 27 символ.
Табу керек: осы хабарламаның ASCII (8 бит/символ) және Unicode (16 бит/символ) кодтауындағы көлемі.
Неге әртүрлі көлем шығады? ASCII әр символға 8 бит бөлсе, Unicode — 2 есе көп, 16 бит бөледі, сол себепті бірдей мәтін Unicode-та ЕКІ ЕСЕ КӨП орын алады.
- ASCII (8 бит): 27 × 8 = 216 бит (27 байт)
- Unicode (16 бит): 27 × 16 = 432 бит (54 байт)
Жауабы: ASCII бойынша — 216 бит, Unicode бойынша — 432 бит (екі есе көп).
- Компьютер тек санды өңдейді, сондықтан мәтін символдары кодтық кесте арқылы сандарға түрлендіріледі.
- ASCII — алғашқы стандарт, 256 символ (латын + ел бойынша ерекшеленетін кеңейтілген бөлік).
- KZ-1048 — қазақ тілінің ресми ANSI-негізді кодтауы.
- Unicode — әлемнің барлық тілін бір стандартқа біріктіретін заманауи шешім (UTF-8, UTF-16, UTF-32).
- Мәтін көлемін есептеу: символ саны × символдың бит саны (ASCII=8 бит, Unicode=16 бит).