/ASCII
TI:WTBD/ASCII
American Standard Code for Information Interchange
Kodowanie dla podstawowego alfabetu łacińskiego (+ cyfry i podstawowe znaki przestankowe), oparte na zasadzie 1 znak ↔ 1 bajt (8 bitów). Wystarczające dla zapisu tekstów w j. angielskim, ale chyba w żadnym innym. Inaczej: US-ASCII. W 1968 prezydent L. Johnson zarządził, że sprzęt kupowany przez rząd federalny musi wspierać kodowanie ASCII, co prawdopodobnie przypieczętowało sukces tego standardu :D
Ustaliło się dość dawno (lata 1960te) jako podstawowy standard kodowania tekstu w branży komputerowej. Istniały i nawet do tej pory pokutują standardy konkurencyjne, zupełnie odmienne (EBCDIC, ..?).
Podstawowe ASCII wykorzystuje jedyne bajty o najstarszym bicie wyzerowanym, i to nie wszystkie. Tablicę kodów mamy zwykle pod ręką (man ascii).
- 0 .. 31: tzw. kody kontrolne, tradycyjnie stosowane do sterowania przepływem na terminalach, liniach szeregowych itp. Co ciekawsze:
- 0 (NUL) nie ma prawa w zasadzie występować w strumieniu tekstowym (uwaga: UTF-16), w szczególności -- w nazwach plików (Posix), znacznik końca napisu (łańcucha znakowego) w języku C
- 7 .. 13: [BEL, BS, HT, LF, VT, FF, CR] czyli ['\a', '\b', '\t', '\n', '\v', '\f', '\r'] p. TI:WTBD/KodySpecjalne
- 27: ESC
- 32 .. 47: znaki od spacji do '/'
- 48 .. 57: cyfry dziesiętne
- 58 .. 64: jeszcze trochę znaków
- 65 .. 90: wielkie litery
- 91 .. 96: jeszcze trochę znaków
- 97 .. 122: małe litery
- 123 .. 126: jeszcze kilka znaków
- 127: kod DEL
Zbyt wiele logiki może w tym nie ma, ale jednak:
- wszystkie cyfry stoją przed wszystkimi literami, i to w porządku numerycznym
- wszystkie wielkie litery stoją przed wszystkimi małymi, w porządku alfabetycznym
- wszystkie małe litery stoją w porządku alfabetycznym
i każda z tych grup zajmuje ciągły przedział wartości kodów. Wiele tradycyjnych narzędzi posługuje się sortowaniem "leksykograficznym" wg. wartości kodów ASCII, w oparciu o te własności. Co jest w sumie zadowalające, jeśli posługujemy się wyłącznie j. angielskim.
- (kod małej litery) = (kod wielkiej litery) + 32; 32 to binarnie 100000; kody A .. Z to 1000001 .. 1011010; stąd mała litera różni się od wielkiej o ustawienie jednego bitu.
Prawidłowy zapis języków innych niż angielski wymaga co najmniej 8-bitowych rozszerzeń ASCII, lub Unicode.