лекція 06

кодування символів

Національні кодування

визначення

Сучасні комп'ютери зберігають всю інформацію у вигляді довічних байтів, т. Е. 8-бітових одиниць, здатних приймати значення від 0 до 255. Для того, щоб зберегти в пам'яті комп'ютера, не числову, а текстову інформацію, ми повинні визначити, яким байтом або байтами кодуватиметься кожен символ, який може зустрітися в нашому тексті. Таке відповідність між символами і кодують їх байтами і називається кодуванням символів (character set). Неважко зрозуміти, по-перше, що кожне кодування розробляється для конкретного людського мови (точніше, для конкретної писемності), і, по-друге, що для будь-якої мови таких кодувань можна придумати скільки завгодно. Знаючи людську натуру, неважко здогадатися і про те, що придумають їх набагато більше, ніж потрібно. Природно, так і сталося: найбільш розвинена на сьогодні бібліотека функцій перекодування ICU (International Components for Unicode) корпорації IBM підтримує більше 170 різних кодувань.

кодування латиниці

Розглянемо докладніше кодування тих писемностей, з якими найчастіше стикається російський розробник, т. Е. Латиниці і кирилиці. Для латиниці на сьогодні використовуються дві основні кодування: ASCII і EBCDIC. ASCII (American Standard Code for Information Interchange) - це семібітная кодова таблиця (коди символів 00 - 7F або 0 - 127 десяткові), що стала стандартом для малих і середніх комп'ютерів, а тому і стандартом для Веба. У ній байти з шестнадцатерічнимі кодами 00 - 1F і 7F використовуються для кодування керуючих (не відображаються) символів, а інші кодують такі символи:

лекція 06

Кодування EBCDIC (Extended Binary-Coded Decimal Interchange Code) - це восьмібітного кодування (коди символів 00 - FF або 0 - 255 десяткові), прийнята на всіх комп'ютерах IBM, крім PC. Можна було б її не згадувати, але в міру розвитку XML як основного формату транспорту даних в Мережі ми все частіше будемо стикатися з XML-файлами, згенерували на великих машинах. Тут байти з кодами 00 - 3F кодують керуючі символи, а інші використовуються так:

лекція 06

кодування кирилиці

Кодування «нелатинських» алфавітних писемностей влаштовані таким чином. Вони кодуються восьмибитового таблицею (1 байт = 1 символ), т. Е. Числами 00 - FF (0 - 255 десяткові) так, що молодша половина кодової таблиці (коди 00 - 7F або 0 - 127 десяткові) збігається з ASCII, а старша половина (коди 80 - FF або 128 - 255 десяткові) містить національну кодування, т. е. російські букви в російських кодових таблицях, турецькі в турецьких і т. д. Така організація національних кодових таблиць дозволяє правильно відображати і обробляти латинські букви, цифри і знаки пунктуації на будь-якому комп'ютері, незалежно від його установок системи. Саме так, зокрема, влаштовані і російські кодові таблиці, так що ми можемо в подальшому розглядати тільки старшу їх половину.

Історія російських кодувань - це приклад плутанини, рідкісної навіть для нашої комп'ютерної дійсності. Радянські стандартизуючі організації брали ГОСТи, виробники комп'ютерів (Apple) і операційних систем (Microsoft) їх дружно ігнорували і вводили власні кодування. В результаті ми отримали спадок з чотирьох різних ГОСТів, два кодування від Microsoft (для DOS і для Windows) і кодування від Apple для Mac'ов (все, природно, несумісні між собою). Ті, хто цікавиться подробицями можуть звернутися до сторінці The Cyrillic Charset Soup.

На щастя, сьогодні немає потреби детально описувати всі ці кодування, оскільки в Рунеті вижили тільки дві з них. Перша - це КОІ8-Р (ЯКІ означає Код для Обміну та обробки Інформації, Р відрізняє російську кодову таблицю від української, КОІ8-У). КОІ8-Р була зареєстрована Андрієм Черновим з Релкоме як RFC 1489 і має вигляд:

лекція 06

КОІ8-Р є стандартом de facto для всіх служб Інтернету, крім WWW. Зокрема, всі служби електронної пошти і новин Рунета працюють в цьому кодуванні. Що стосується Інтернету, то тут ситуація складніша. Справа в тому, що більше 90% клієнтських комп'ютерів Мережі працює під управлінням Windows різних версій. Windows використовує власну систему кодування російських букв, яку прийнято називати по номеру кодової сторінки Windows-1251 або CP1251:

лекція 06

Схожі статті