ASCII справді спочатку був задуманий як 7-бітний код. Це було зроблено задовго до того, як 8-бітні байти стали всюдисущими, і навіть у 90-ті роки ви могли знайти програмне забезпечення, яке передбачало, що воно може використовувати 8-й біт кожного байту тексту для своїх цілей ("не 8-бітний чистий"). Сьогодні люди думають про це як 8-бітове кодування, в якому байти від 0x80 до 0xFF не мають визначеного значення, але це реткон .
Є десятки кодувань тексту, які використовують 8-й біт; їх можна класифікувати як сумісні з ASCII чи ні, а також з фіксованою або змінною шириною. ASCII-сумісний означає, що незалежно від контексту одиничні байти зі значеннями від 0x00 до 0x7F кодують ті самі символи, що і в ASCII. Ви не хочете мати нічого спільного з кодировкою тексту, не сумісною з ASCII, якщо зможете цього уникнути; наївні програми, які очікують, що ASCII мають тенденцію неправильно трактувати їх катастрофічно, часто порушуючи безпеку. Нині вони настільки застаріли, що (наприклад, HTML5 забороняє їх використання у загальнодоступній мережі Інтернет, за нещасливим винятком UTF-16 . Я більше не буду говорити про них.
Кодування фіксованої ширини означає, що це звучить: всі символи кодуються, використовуючи однакову кількість байтів. Щоб бути сумісним з ASCII, фіксоване кодування з фіксованим кодуванням має кодувати всі його символи, використовуючи лише один байт, так що воно може мати не більше 256 символів. Найпоширенішим таким кодуванням в даний час є Windows-1252 , розширення ISO 8859-1 .
Існує лише одне кодування, сумісне з шириною ASCII, про яке варто знати сьогодні, але це дуже важливо: UTF-8 , який упаковує весь Unicode у кодування, сумісне з ASCII. Ви дійсно хочете використовувати це, якщо зможете ним керувати.
Як остаточне зауваження, "ASCII" нині бере своє практичне визначення від Unicode, а не від його оригінального стандарту (ANSI X3.4-1968), оскільки історично в репертуарі ASCII 127 символів було декілька десятків варіантів - наприклад, деякі з них розділові знаки можуть бути замінені наголошеними літерами для полегшення передачі французького тексту. Сьогодні всі ці варіації застаріли, і коли люди кажуть "ASCII", вони означають, що байти зі значенням 0x00 до 0x7F кодують кодові точки Unicode U + 0000 до U + 007F. Це, ймовірно, має значення для вас, якщо ви коли-небудь опинитесь, що пишете технічний стандарт.
Якщо вас цікавить історія ASCII та попередні кодування, почніть із статті "Еволюція кодів символів, 1874-1968" (копія самвидаву за адресою http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ), а потім переслідувати його посилання (багато з яких недоступні в Інтернеті, і їх важко знайти навіть при доступі до університетської бібліотеки, я з жалем кажу).