ASCII był rzeczywiście pierwotnie pomyślany jako kod 7-bitowy. Zrobiono to na długo zanim 8-bitowe bajty stały się wszechobecne, a nawet w latach 90. można było znaleźć oprogramowanie, które zakładało, że może używać 8. bitu każdego bajtu tekstu do własnych celów („nie czyste 8-bitowe”). W dzisiejszych czasach ludzie myślą o tym jako o 8-bitowym kodowaniu, w którym bajty od 0x80 do 0xFF nie mają zdefiniowanego znaczenia, ale to jest retcon .
Istnieją dziesiątki kodowań tekstu korzystających z ósmego bitu; można je sklasyfikować jako zgodne lub niekompatybilne z ASCII oraz o stałej lub zmiennej szerokości. Zgodność z ASCII oznacza, że niezależnie od kontekstu pojedyncze bajty o wartościach od 0x00 do 0x7F kodują te same znaki, które byłyby w ASCII. Nie chcesz mieć nic wspólnego z kodowaniem tekstu niezgodnym z ASCII, jeśli możesz tego uniknąć; naiwne programy oczekujące ASCII mają tendencję do błędnej interpretacji ich w katastrofalny, często łamiący zabezpieczenia sposób. Obecnie są tak przestarzałe, że (na przykład) HTML5 zabrania ich używania w sieci publicznej, z niefortunnym wyjątkiem UTF-16 . Nie będę więcej o nich mówić.
Kodowanie o stałej szerokości oznacza, jak to brzmi: wszystkie znaki są kodowane przy użyciu tej samej liczby bajtów. Aby było zgodne z ASCII, kodowanie ze stałym ustawieniem musi kodować wszystkie swoje znaki przy użyciu tylko jednego bajtu, więc nie może mieć więcej niż 256 znaków. Najpopularniejszym obecnie takim kodowaniem jest Windows-1252 , rozszerzenie ISO 8859-1 .
Obecnie jest tylko jedno kodowanie zgodne z ASCII o zmiennej szerokości, o którym warto wiedzieć, ale jest to bardzo ważne: UTF-8 , które pakuje cały kod Unicode do kodowania zgodnego z ASCII. Naprawdę chcesz tego używać, jeśli możesz nim zarządzać.
Na koniec, "ASCII" obecnie bierze swoją praktyczną definicję z Unicode, a nie z oryginalnego standardu (ANSI X3.4-1968), ponieważ historycznie istniało kilkadziesiąt odmian repertuaru ASCII 127-znakowego - na przykład niektóre z interpunkcję można zastąpić literami akcentowanymi, aby ułatwić przesyłanie tekstu francuskiego. Obecnie wszystkie te odmiany są przestarzałe, a kiedy ludzie mówią „ASCII”, mają na myśli to, że bajty o wartości od 0x00 do 0x7F kodują punkty kodowe Unicode od U + 0000 do U + 007F. Prawdopodobnie będzie to miało dla Ciebie znaczenie tylko wtedy, gdy kiedykolwiek napiszesz normę techniczną.
Jeśli interesuje Cię historia ASCII i poprzedzające ją kodowania, zacznij od artykułu „The Evolution of Character Codes, 1874-1968” (kopia samizdat dostępna pod adresem http://falsedoor.com/doc/ascii_evolution-of- character-cod.pdf ), a następnie gonić za jego referencjami (z których wiele nie jest dostępnych w Internecie i może być trudnych do znalezienia nawet przy dostępie do biblioteki uniwersyteckiej, przykro mi to mówić).