Таблиця ASCII: як 128 чисел стали фундаментом тексту
ASCII, скорочення від American Standard Code for Information Interchange (Американський стандартний код для обміну інформацією), — це кодування, яке навчило комп'ютери домовлятися про те, що є літерою. Опублікований у 1963 році та вдосконалений впродовж 1960-х, він відображає кожен базовий символ англійського тексту, цифри та кілька керуючих сигналів на числа, які машина може зберігати й передавати. Коли ви натискаєте клавішу з великою літерою A, комп'ютер зберігає не форму, а число 65. ASCII — це таблиця відповідностей, яка всюди і завжди означає, що це число є літерою A.
Стандарт відомий своєю компактністю. ASCII — це 7-бітний код, тобто кожен символ вміщується в семи двійкових розрядах, а весь репертуар охоплює рівно 2 у сьомому степені, або 128 окремих кодових точок від 0 до 127. Така економія була навмисною. Ранні телетайпи та модеми були повільними й дорогими, тому кожен біт мав значення. Семи бітів вистачало, щоб охопити великі та малі літери латиниці, десять цифр, поширені розділові знаки та сигнальні символи, що підтримували синхронізацію пристроїв, а один біт залишався на перевірку помилок у багатьох системах.

Дві половини: керуючі та друковані символи
Таблиця чітко ділиться на два розділи. Коди від 0 до 31, а також код 127 (DEL), — це керуючі символи. Вони не виводять гліфи на екрані. Натомість вони дають пристрою команду щось зробити: код 9 — горизонтальна табуляція, код 10 — переведення рядка, код 13 — повернення каретки, код 7 — дзвінок, який колись змушував термінал видавати звуковий сигнал. Усього існує тридцять три таких сигнальних коди, і хоча багато з них є вже суто历史ичними реліктами, переведення рядка, повернення каретки та табуляція й досі є основою форматування текстових файлів.
Коди від 32 до 126 — це друковані символи, їх дев'яносто п'ять. Код 32 — пробіл, який вважається друкованим, бо просуває курсор, хоча нічого не відображає. Далі йдуть знаки пунктуації та спеціальні символи, цифри від 0 до 9 під кодами 48–57, великі літери від A до Z під кодами 65–90, малі літери від a до z під кодами 97–122. З цього розміщення випливає чудова властивість: малий і великий варіанти тієї самої літери відрізняються рівно на 32, тому перемикання регістру вимагає лише зміни одного біта. Ці закономірності не випадкові — вони були спроектовані так, щоб сортування та зміна регістру виконувалися простою арифметикою.
Десяткові, шістнадцяткові та двійкові: три уявлення одного числа
Кожен код ASCII — просто число, і ви зустрінете його у трьох записах. Десятковий — це звична десятирічна форма, тобто A — це 65. Шістнадцятковий, основа 16, — форма, до якої звертаються програмісти, бо вона зручно вирівнюється з байтами: A — це 0x41, а діапазон друкованих символів охоплює 0x20–0x7E. Двійковий, основа 2, — форма, в якій апаратура фактично зберігає дані, тому A — це 1000001 у семи бітах. Той самий символ, три нотації, і вміння вільно переходити між ними — базова навичка під час читання дампів пам'яті або мережевого трафіку. Якщо ви часто працюєте з такими перетвореннями, повний набір довідкових таблиць на speedor.net тримає всі відповідності за один клік.

Де ASCII досі важливий
Було б помилкою відносити ASCII виключно до історії. Він живий у щоденній роботі всіх, хто має справу з кодом. Мови програмування обробляють рядкові літерали, вихідні файли та ключові слова протоколів як ASCII на рівні байтів. Мережеві протоколи, як-от HTTP-заголовки, SMTP та багато конфігураційних форматів, визначені в ASCII, щоб залишатися зрозумілими для людини. Коли рядок виглядає пошкодженим, розробники відкривають шістнадцятковий переглядач і читають необроблені байти за таблицею ASCII, щоб знайти зайвий керуючий символ або неправильний символ кінця рядка. Кодування URL, Base64 та екранування символів — усе це будується на значеннях ASCII. Для тих, хто налагоджує помилки кодування, швидкий довідник поруч із інструментами розробника перетворює загадковий байт на очевидну відповідь.
Від ASCII до Unicode та UTF-8
ASCII чудово впорався з англійською — і майже нічого більше. У 128 символів не вмістиш літери з акцентами, кирилицю, китайські ієрогліфи, арабське письмо чи емодзі. Unicode вирішив цю проблему, призначивши кожному символу кожної системи письма унікальний номер — кодову точку — їх уже понад сто тисяч. Важливо, що Unicode — це каталог символів, а не формат зберігання, тому для перетворення кодових точок на байти потрібне кодування.
UTF-8 — саме таке кодування, і завдяки йому ASCII насправді нікуди не зник. UTF-8 використовує від одного до чотирьох байтів на символ і був розроблений так, щоб кодові точки від 0 до 127, тобто весь діапазон ASCII, зберігалися в одному байті, ідентичному чистому ASCII. Це робить UTF-8 повністю зворотно сумісним: будь-який дійсний файл ASCII вже є дійсним файлом UTF-8. Символи вище 127 займають додаткові байти. Ця елегантна сумісність є головною причиною того, що UTF-8 нині підтримує переважну більшість вебу. Коротко: ASCII — це оригінальне ядро з 128 символів, Unicode — всесвітній каталог, що його містить, а UTF-8 — кодування, яке переносить обидва, зберігаючи ASCII-текст у байтах без змін.
Часті запитання
Скільки символів у таблиці ASCII?
Стандарт ASCII визначає 128 символів з номерами від 0 до 127. З них 95 — друковані символи, включно з пробілом, і 33 — керуючі символи, що подають команди пристроям, а не виводять гліфи.
У чому різниця між керуючими та друкованими символами?
Керуючі символи (коди від 0 до 31 та 127) дають пристрою команду виконати дію, як-от переведення рядка або табуляцію, і не створюють видимого гліфа. Друковані символи (коди від 32 до 126) — це літери, цифри, розділові знаки та пробіл, які ви бачите на екрані.
Чому ASCII є 7-бітним кодом?
Сім бітів дають рівно 128 комбінацій, яких вистачало для охоплення англійських літер, цифр, розділових знаків і керуючих сигналів при економії пропускної здатності на повільному ранньому обладнанні. Восьмий біт у байті часто резервувався для перевірки парності помилок.
Який ASCII-код літери A?
Велика A — це десяткове 65, шістнадцяткове 0x41 і двійкове 1000001. Мала a — десяткове 97, що рівно на 32 більше, — вбудована закономірність, що дозволяє змінювати регістр простою арифметикою.
Чи ASCII — те саме, що Unicode?
Ні. ASCII охоплює 128 символів, тоді як Unicode каталогізує понад сто тисяч символів з кожної системи письма. ASCII фактично є першими 128 кодовими точками Unicode, тобто невеличкою підмножиною більшого стандарту.
Як UTF-8 пов'язаний із ASCII?
UTF-8 — це кодування для Unicode, яке зберігає кодові точки від 0 до 127 в одному байті, ідентичному ASCII. Це робить кожен ASCII-файл дійсним UTF-8-файлом, — саме тому UTF-8 зворотно сумісний і домінує в сучасному вебі.
