Що таке ASCII і як працює кодування символів

Автор: Опубліковано

Коротко: ASCII — це стандарт, який присвоює 128 символам числа від 0 до 127, що дає змогу зберігати й передавати текст як дані. Він охоплює, зокрема, літери англійського алфавіту, цифри, розділові знаки та керівні коди, але не містить польських літер, як-от «ą» чи «ł». Сучасні тексти зазвичай зберігають у UTF-8, яке сумісне з ASCII для цих перших 128 символів.

Як працює ASCII і що означає його назва

ASCII — це скорочення від American Standard Code for Information Interchange, тобто американського стандартного коду обміну інформацією. Це кодування символів: визначене правило, за яким символам ставлять у відповідність числові значення. Комп’ютер зберігає числа у вигляді бітів, а програма, що читає текст, інтерпретує їх відповідно до вибраного кодування.

ASCII — 7-бітове кодування. Сім бітів дають змогу записати 128 різних значень, від 0 до 127. У файлах кожен символ ASCII зазвичай займає один байт, тобто вісім бітів, причому старший біт дорівнює нулю.

Наприклад, великій літері A відповідає десяткове число 65, яке в шістнадцятковій системі записують як 41, а у двійковій, в одному байті, — як 01000001. Це три способи подання того самого значення, а не три різні коди символу. Запис 0x41, який трапляється в документації та програмуванні, позначає саме шістнадцяткове значення.

Які символи містить таблиця ASCII

У ASCII є 95 друкованих символів, включно з пробілом. Решта 33 позиції — керівні коди, які не позначають звичайних видимих символів. Вони слугують, зокрема, для позначення табуляції або кінця рядка.

Символ або функціяДесятковий кодШістнадцятковий код
Табуляція (TAB)909
Перехід на новий рядок (LF)100A
Повернення каретки (CR)130D
Пробіл3220
Цифра 04830
Велика літера A6541
Мала літера a9761
Видалення (DEL)1277F

Цифра як символ — не те саме, що число. Текст 123 складається з трьох символів із кодами ASCII 49, 50 і 51. Щоб виконати обчислення з цим текстом, програма має інтерпретувати його як число.

Великі й малі літери мають окремі коди, тому A і a — різні символи. Так само пробіл не є «відсутністю даних»: він має власний код і займає місце у файлі.

Коди CR і LF пояснюють частину відмінностей між текстовими файлами. В Unix-подібних системах кінець рядка зазвичай позначають кодом LF, а в Windows — парою CRLF. Тому документи можуть виглядати в редакторі однаково, хоча містять різні послідовності байтів наприкінці рядків.

ASCII, Unicode і UTF-8 — у чому різниця

ASCII не охоплює польських літер із діакритичними знаками, грецького алфавіту, кирилиці чи емодзі. Для роботи з текстами багатьма мовами призначений Unicode — стандарт, який присвоює символам та іншим елементам тексту числа, що називаються кодовими точками. UTF-8 — це спосіб запису цих кодових точок як послідовностей байтів.

Unicode і UTF-8 — не синоніми. Unicode визначає, зокрема, який номер має певний символ, а UTF-8 — як записати цей номер у даних. ASCII поєднує невеликий набір символів із простим числовим кодуванням цих символів.

Перші 128 кодових точок Unicode відповідають ASCII. У UTF-8 кожен із цих символів записується тим самим єдиним байтом, що й у ASCII. Тому файл, який містить лише коректний текст ASCII, також є коректним файлом UTF-8.

Різницю можна побачити на прикладі слова kot: воно займає три байти і в ASCII, і в UTF-8. Натомість слово żółw неможливо записати лише засобами ASCII. У UTF-8 воно займає сім байтів: по два для ż, ó і ł та один для w.

Чому «розширений ASCII» може вводити в оману

Термін «розширений ASCII» не позначає єдиного універсального кодування. Його іноді вживають щодо різних 8-бітових кодувань, які зберігають діапазон ASCII і використовують додаткові значення від 128 до 255. До них належать, зокрема, Windows-1250 та ISO-8859-2, які застосовують для текстів центральноєвропейськими мовами.

Той самий додатковий байт може позначати різні символи залежно від кодування. Якщо програма прочитає файл за неправильним правилом, замість польських літер можуть з’явитися некоректні символи, які розмовною мовою називають «кракозябрами». Отже, самого позначення «файл ASCII» недостатньо для опису документа, що містить символи поза основним набором.

Коли ASCII має практичне значення

ASCII досі трапляється в документації протоколів, форматах файлів та обмеженнях для полів форм. Повідомлення «дозволено лише символи ASCII» означає, що не можна використовувати, зокрема, польські літери, типографські лапки й довгі тире. Проте це не означає автоматично, що поле приймає всі символи ASCII: правила або засіб перевірки можуть дозволяти лише літери й цифри.

Якщо в імпортованому файлі символи відображаються неправильно, виконайте кілька кроків:

  1. Збережіть копію оригіналу, перш ніж почнете зберігати зміни.
  2. Перевірте кодування, зазначене джерелом файлу, наприклад у налаштуваннях експорту.
  3. Відкрийте файл у редакторі з цим кодуванням і перевірте польські літери.
  4. Лише після правильного прочитання збережіть копію в UTF-8, якщо цільова система підтримує це кодування.

Для нового документа з польським текстом виберіть UTF-8, якщо одержувач не вимагає іншого формату. Якщо вам висувають вимогу «ASCII», уточніть також точний набір дозволених символів — це допоможе уникнути відхилення даних навіть за правильного кодування.

Дивіться також: Що таке AGI?

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.