глава 3
кодування тексту
У цьому розділі ми повторимо, як в комп'ютерах кодується текст.
Ви вже знаєте, як можна кодувати числа. Чи не виникає ніяких проблем і при кодуванні будь-який інший інформації, представимо за допомогою обмеженого набору символів - алфавіту. Для цього досить пронумерувати всі знаки цього алфавіту і потім записувати в пам'ять комп'ютера (і, природно, обробляти) відповідні номери.
При кодуванні тексту для кожного його символу відводиться, зазвичай, по 1 байту. Це дозволяє використовувати 2 8 = 256 різних символів. Відповідність між символом і його кодом, взагалі кажучи, може бути вибрано абсолютно довільно. Однак на практиці необхідно мати можливість прочитати на одному комп'ютері текст, створений на іншому. Тому таблиці кодувань намагаються стандартизувати. Практично всі використовуються зараз таблиці засновані на "американському стандартному коді обміну інформацією" ASCII 5. Цей стандарт визначає значення для нижньої половини кодової таблиці - перше 127 кодів (32 керуючих коду, основні знаки пунктуації та арифметичні символи, цифри і латинські букви). В результаті, ці символи відображаються вірно, яка б кодування не використовувати на вашому комп'ютері. Гірше йде справа з "національними" символами і "друкарськими" розділовими знаками. А особливо не пощастило мов, які використовують кириличний алфавіт (російської, української, білоруської, болгарської і т.д.). Наприклад, для російської мови зараз широко використовуються п'ять таблиць кодувань:
- CP866 (DOS-альтернативна) 6 - на PC-сумісних комп'ютерах при роботі з операційними системами DOS і OS / 2, а також в аматорській міжнародної мережі Фідо (Fidonet).
- CP1251 (Windows-кодування) - на PC-сумісних при роботі під Windows 3.1 і Windows 95
- KOI-8r - найстаріша із решти досі кодувань. Застосовується на комп'ютерах, що працюють під UNIX, є фактичним стандартом для російських текстів в мережі Internet.
- Macintosh Cyrillic - як видно з назви, призначена для роботи з усіма кириличними мовами на Макінтошах 7.
- ISO-8859. Це кодування замислювалася як міжнародний стандарт для кириличних текстів, однак на території Росії практично не застосовується.
Насправді, проблема не така вже й велика. Якщо ми знаємо, як представлений вихідний текст і яка таблиця використовується нашим комп'ютером, перетворення виконати дуже легко - потрібно просто поміняти одні коди на інші (за таблицею перекодування). Для цього служать спеціальні програми - текстові конвертори. Останнім часом з'являються конвертори, здатні самостійно визначати вихідну кодування тексту і навіть вміють "розшифровувати" текст після декількох неправильних перекодіровок.
Шіснадцяткові коди деяких букв
Зауважимо, до речі, що існують і спеціальні шрифти (так звані, дінгбатси), які містять не букви, а спеціальні символи, наприклад, математичні або музичні; елементи орнаментів, піктограми.
Зараз, коли обсяг пам'яті комп'ютерів надзвичайно зріс, вже немає потреби дуже сильно економити при кодуванні тексту. Можна дозволити собі "розкіш" витрачати для зберігання тексту вдвічі більше пам'яті (виділяючи для кожного символу не 1, а 2 байта). При цьому з'являється можливість розмістити в кодової таблиці - кожен на своєму місці - не тільки букви європейських алфавітів (латинського, кириличного, грецького), але і букви арабського, грузинського та багатьох інших мов і навіть більшу частину японських і китайських ієрогліфів. Адже два байта можуть зберігати вже число від 0 до 65535.
Двухбайтное міжнародна кодування Unicode. розроблена кілька років тому, тепер починає впроваджуватися на практиці.
Контрольні питання
- Яким чином кодується на комп'ютері текст?
- Ви відкриваєте текстовий файл, і бачите на екрані безглуздий набір символів. З чим це може бути пов'язано? Які дії потрібно зробити, щоб прочитати текст?
- У чому переваги і недоліки кодування Unicode?
Примітки
- ASCII - American Standard Code for Information Interchange
- Точніше, альтернативна модифікована. Таку назву збереглося з тих часів, коли крім неї були ще "основна кодування ГОСТ" і "альтернативне кодування ГОСТ"
- Дивно, але факт: при розробці цієї кодування не врахували одну букву українського алфавіту. Тому українська - єдина кириличний мову, для якого на Макінтошах є своя окрема кодування - Macintosh Ukrainian