ASCII - ASCII
MIME / IANA | us-ascii |
---|---|
Skróty) | ISO-IR-006, ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, USA, IBM367, cp367 |
Języki) | język angielski |
Klasyfikacja | Seria ISO 646 |
Rozszerzenia | |
Poprzedzony | ITA 2 , FIELDATA |
zastąpiony przez | ISO 8859 , Unicode |
ASCII ( / ć s k í / ( słuchać ) ASS -kee ), w skrócie od amerykańskiego Norma Wymiany Informacji , to znak kodowania standardem dla komunikacji elektronicznej. Kody ASCII reprezentują tekst w komputerach, sprzęcie telekomunikacyjnym i innych urządzeniach. Większość nowoczesnych schematów kodowania znaków jest oparta na ASCII, chociaż obsługują wiele dodatkowych znaków.
The Internet Assigned Numbers Authority (IANA) preferuje nazwę US-ASCII dla tego kodowania znaków.
ASCII jest jednym z kamieni milowych IEEE .
Przegląd
ASCII został opracowany z kodu telegraficznego . Jego pierwsze komercyjne wykorzystanie było jak siedmioletnim nieco Teleprinter kodu promowana przez służby danych Bell. Prace nad standardem ASCII rozpoczęły się w maju 1961 r. wraz z pierwszym posiedzeniem podkomitetu X3.2 stowarzyszenia American Standards Association (ASA) (obecnie American National Standards Institute lub ANSI). Pierwsza edycja normy została opublikowana w 1963, przeszła gruntowną rewizję w 1967, a jej ostatnia aktualizacja miała miejsce w 1986. W porównaniu z wcześniejszymi kodami telegraficznymi, zaproponowany kod Bell i ASCII zostały uporządkowane w celu wygodniejszego sortowania (tj. alfabetyzacji). ) list i dodanych funkcji dla urządzeń innych niż teledrukarki.
Użycie formatu ASCII do wymiany sieci zostało opisane w 1969 roku. Dokument ten został formalnie podniesiony do standardu internetowego w 2015 roku.
Pierwotnie oparty na alfabecie angielskim , ASCII koduje 128 określonych znaków na siedmiobitowe liczby całkowite, jak pokazano na powyższym wykresie ASCII. Można wydrukować dziewięćdziesiąt pięć zakodowanych znaków: są to cyfry od 0 do 9 , małe litery od a do z , duże litery od A do Z oraz znaki interpunkcyjne . Ponadto oryginalna specyfikacja ASCII zawierała 33 niedrukowalne kody kontrolne, które pochodziły z maszyn Teletype ; większość z nich jest obecnie przestarzała, chociaż niektóre są nadal powszechnie używane, takie jak powrót karetki , znak nowego wiersza i kody tabulacji .
Na przykład małe litery i byłyby reprezentowane w kodowaniu ASCII w postaci binarnej 1101001 = szesnastkowe 69 ( i to dziewiąta litera) = dziesiętne 105.
Historia
American Standard Code for Information Interchange (ASCII) został opracowany pod auspicjami komitetu American Standards Association (ASA), zwanego komitetem X3, przez podkomitet X3.2 (później X3L2), a później przez podkomitet X3. 2.4 grupa robocza (obecnie INCITS ). ASA przekształciła się w Instytut Standardów Stanów Zjednoczonych Ameryki (USASI) i ostatecznie Amerykański Narodowy Instytut Standardów (ANSI).
Po wypełnieniu pozostałych znaków specjalnych i kodów kontrolnych, ASCII został opublikowany jako ASA X3.4-1963, pozostawiając 28 pozycji kodu bez przypisanego znaczenia, zarezerwowanych dla przyszłej standaryzacji i jeden nieprzypisany kod kontrolny. W tym czasie toczyła się debata, czy powinno być więcej znaków kontrolnych niż małych liter. Niezdecydowanie nie trwało długo: w maju 1963 roku Grupa Robocza CCITT ds. Nowego Alfabetu Telegraficznego zaproponowała przypisanie małych liter do patyczków 6 i 7, a Międzynarodowa Organizacja Normalizacyjna TC 97 SC 2 głosowała w październiku za włączeniem zmiany do projektu standardu . Grupa zadaniowa X3.2.4 przegłosowała zatwierdzenie zmiany na ASCII na spotkaniu w maju 1963 roku. Zlokalizowanie małych liter w patykach 6 i 7 spowodowało, że znaki różniły się wzorem bitowym od wielkich o jeden bit, co uprościło dopasowanie znaków bez uwzględniania wielkości liter oraz konstrukcję klawiatur i drukarek.
Komitet X3 wprowadził inne zmiany, w tym inne nowe znaki (znaki nawiasów klamrowych i pionowej kreski ), zmianę nazw niektórych znaków kontrolnych (SOM stał się początkiem nagłówka (SOH)) oraz przenoszenie lub usuwanie innych (RU zostało usunięte). ASCII został następnie zaktualizowany jako USAS X3.4-1967, następnie USAS X3.4-1968, ANSI X3.4-1977 i wreszcie ANSI X3.4-1986.
Wersje standardu ASCII:
- ASA X3.4-1963
- ASA X3.4-1965 (zatwierdzony, ale nieopublikowany, jednak używany przez IBM 2260 i 2265 Display Stations oraz IBM 2848 Display Control)
- USA X3.4-1967
- USA X3.4-1968
- ANSI X3.4-1977
- ANSI X3.4-1986
- ANSI X3.4-1986 (R1992)
- ANSI X3.4-1986 (R1997)
- ANSI INCITS 4-1986 (R2002)
- ANSI INCITS 4-1986 (R2007)
- (ANSI) INCITS 4-1986 [R2012]
- (ANSI) INCITS 4-1986[R2017]
W standardzie X3.15 komisja X3 zajęła się również tym, w jaki sposób powinien być przesyłany ASCII ( najpierw bit najmniej znaczący ) i jak powinien być nagrany na taśmie perforowanej. Zaproponowali 9-ścieżkowy standard dla taśmy magnetycznej i próbowali poradzić sobie z niektórymi formatami kart dziurkowanych .
Rozważania projektowe
Szerokość bitu
Podkomisja X3.2 zaprojektowała ASCII w oparciu o wcześniejsze systemy kodowania teledrukarek. Podobnie jak inne kodowania znaków , ASCII określa zgodność pomiędzy cyfrowymi wzorcami bitowymi a symbolami znaków (tj. grafemami i znakami sterującymi ). Pozwala to urządzeniom cyfrowym komunikować się ze sobą oraz przetwarzać, przechowywać i przekazywać informacje znakowe, takie jak język pisany. Przed opracowaniem ASCII stosowane kodowania obejmowały 26 znaków alfabetycznych , 10 cyfr i od 11 do 25 specjalnych symboli graficznych. Aby uwzględnić wszystkie te elementy oraz znaki kontrolne zgodne ze standardem Comité Consultatif International Téléphonique et Télégraphique (CCITT) International Telegraph Alphabet No. 2 (ITA2) z 1924 r., FIELDATA (1956) i wczesnym EBCDIC (1963), wprowadzono ponad 64 kody. wymagane dla ASCII.
ITA2 był z kolei oparty na 5-bitowym kodzie telegraficznym, który Émile Baudot wynalazł w 1870 roku i opatentował w 1874 roku.
Komisja debatowała nad możliwością funkcji przesunięcia (jak w ITA2 ), która pozwoliłaby na reprezentowanie ponad 64 kodów przez kod sześciobitowy . W przesuniętym kodzie niektóre kody znaków określają wybór między opcjami dla następujących kodów znaków. Pozwala na zwarte kodowanie, ale jest mniej niezawodne w transmisji danych , ponieważ błąd w przesyłaniu kodu zmiany zwykle powoduje, że długa część transmisji jest nieczytelna. Komitet normalizacyjny zdecydował się nie przesuwać, więc ASCII wymagał co najmniej siedmiobitowego kodu.
Komitet rozważał kod ośmiobitowy, ponieważ osiem bitów ( oktetów ) pozwoliłoby dwóm czterobitowym wzorom na efektywne kodowanie dwóch cyfr za pomocą dziesiętnego kodowanego binarnie . Jednak wymagałoby to wszystkich transmisji danych, aby wysłać osiem bitów, podczas gdy siedem może wystarczyć. Komitet przegłosował użycie siedmiobitowego kodu, aby zminimalizować koszty związane z transmisją danych. Ponieważ perforowana taśma w tym czasie mogła nagrywać osiem bitów w jednej pozycji, pozwalała również na bit parzystości do sprawdzania błędów, jeśli jest to pożądane. Maszyny ośmiobitowe (z oktetami jako natywnym typem danych), które nie używały sprawdzania parzystości, zwykle ustawiają ósmy bit na 0.
Wewnętrzna organizacja
Sam kod był wzorowany tak, że większość kodów kontrolnych była razem, a wszystkie kody graficzne były razem, w celu ułatwienia identyfikacji. Pierwsze dwa tak zwane drążki ASCII (32 pozycje) były zarezerwowane dla znaków sterujących. Znak „spacja” musiał być umieszczony przed grafiką, aby ułatwić sortowanie , więc stał się on pozycją 20 hex ; z tego samego powodu przed cyframi umieszczano wiele znaków specjalnych powszechnie stosowanych jako separatory. Komitet zdecydował, że ważne jest wspieranie 64-znakowych alfabetów pisanych wielkimi literami i wybrał wzorzec ASCII, aby można go było łatwo zredukować do użytecznego 64-znakowego zestawu kodów graficznych, jak to zrobiono w kodzie DEC SIXBIT (1963). Małe litery nie były zatem przeplatane wielkimi literami. Aby zachować dostępne opcje dla małych liter i innych grafik, specjalne i numeryczne kody zostały umieszczone przed literami, a litera A została umieszczona w pozycji 41 hex, aby dopasować projekt odpowiedniego brytyjskiego standardu. Cyfry 0–9 są poprzedzone cyframi 011, ale pozostałe 4 bity odpowiadają ich odpowiednim wartościom w formacie binarnym, dzięki czemu konwersja za pomocą dziesiętnego kodowanego binarnie jest prosta.
Wiele znaków niealfanumerycznych zostało umieszczonych zgodnie z ich przesuniętą pozycją na maszynach do pisania; ważną subtelnością jest to, że opierały się one na mechanicznych maszynach do pisania, a nie elektrycznych . Maszyny do pisania mechaniczne podążały za standardem wyznaczonym przez Remington nr 2 (1878), pierwszą maszynę do pisania z klawiszem shift, a przesuniętymi wartościami 23456789-
były "#$%_&'()
– wczesne maszyny do pisania pomijały 0 i 1 , używając O (duża litera o ) i l (małe litery L ), ale pary 1!
i 0)
stały się standardem, gdy 0 i 1 stały się powszechne. Tak więc w ASCII !"#$%
umieszczono w drugim drążku pozycje 1–5, odpowiadające cyfrom 1–5 w sąsiednim drążku. Nawiasy nie mogły jednak odpowiadać 9 i 0 , ponieważ miejsce odpowiadające 0 zajmował znak spacji. Zostało to uwzględnione przez usunięcie _
(podkreślenie) z 6 i przesunięcie pozostałych znaków, co odpowiadało wielu europejskim maszynom do pisania, które umieszczały w nawiasach 8 i 9 . Ta rozbieżność w stosunku do maszyn do pisania doprowadziła do powstania klawiatur ze sparowanymi bitami , zwłaszcza Teletype Model 33 , który używał układu z przesunięciem w lewo, odpowiadającego ASCII, a nie tradycyjnych mechanicznych maszyn do pisania. Elektryczne maszyny do pisania, zwłaszcza IBM Selectric (1961), wykorzystywały nieco inny układ, który stał się standardem na komputerach – po IBM PC (1981), zwłaszcza Model M (1984) – a zatem wartości przesunięcia dla symboli na nowoczesnych klawiaturach nie odpowiadają tak blisko tablicy ASCII jak wcześniejsze klawiatury. /?
Para również terminy do nr 2, a ,< .>
pary były używane na niektórych klawiaturach (inne, w tym nr 2, nie przesuwają ,
(przecinek) lub .
(kropka), więc mogą być używane wielkimi literami bez unshifting). Jednak ASCII podzielił ;:
parę (datuje na nr 2) i przeorganizował symbole matematyczne (zróżnicowane konwencje, zwykle -* =+
) na :* ;+ -=
.
Niektóre typowe znaki nie zostały uwzględnione, w szczególności ½¼¢
, podczas gdy ^`~
zostały uwzględnione jako znaki diakrytyczne do użytku międzynarodowego i <>
do użytku matematycznego, wraz z prostymi znakami linii \|
(oprócz common /
). @ Symbol nie był używany w Europie kontynentalnej i komisja oczekuje, że będzie zastąpiony przez akcentowanym À we francuskim zmienności, więc @ został umieszczony w pozycji 40 hex , tuż przed literą A.
Kody kontrolne uważane za istotne dla transmisji danych to początek wiadomości (SOM), koniec adresu (EOA), koniec wiadomości (EOM), koniec transmisji (EOT), „kim jesteś?” (WRU), "czy jesteś?" (RU), zarezerwowane sterowanie urządzeniem (DC0), synchroniczna bezczynność (SYNC) i potwierdzenie (ACK). Zostały one ustawione tak, aby zmaksymalizować odległość Hamminga między ich wzorami bitów.
Kolejność znaków
Kolejność kodu ASCII jest również nazywana porządkiem ASCIIbetical . Sortowanie danych jest czasami wykonywane w tej kolejności, a nie w „standardowej” kolejności alfabetycznej ( kolejność zestawiania ). Główne odchylenia w kolejności ASCII to:
- Wszystkie wielkie litery poprzedzają małe litery; na przykład „Z” poprzedza „a”
- Cyfry i wiele znaków interpunkcyjnych występuje przed literami
Pośredni porządek konwertuje wielkie litery na małe przed porównaniem wartości ASCII.
Grupy postaci
Postacie kontrolne
ASCII rezerwuje pierwsze 32 kody (liczby od 0 do 31 dziesiętnie) dla znaków kontrolnych : kody pierwotnie przeznaczone nie do reprezentowania informacji drukowalnych, ale raczej do sterowania urządzeniami (takimi jak drukarki ) korzystające z ASCII lub do dostarczania meta-informacji o danych strumienie, takie jak te przechowywane na taśmie magnetycznej.
Na przykład znak 10 reprezentuje funkcję „wysuwu wiersza” (która powoduje, że drukarka przesuwa papier), a znak 8 oznacza „cofnięcie”. RFC 2822 odnosi się do znaków sterujących, które nie zawierają powrotu karetki, nowego wiersza ani białych znaków, jako znaków sterujących innych niż białe znaki. Z wyjątkiem znaków sterujących, które zalecają elementarne formatowanie zorientowane liniowo, ASCII nie definiuje żadnego mechanizmu opisu struktury lub wyglądu tekstu w dokumencie. Inne schematy, takie jak języki znaczników , strona adresowa oraz układ i formatowanie dokumentu.
Oryginalny standard ASCII używał tylko krótkich opisowych fraz dla każdego znaku kontrolnego. Wywołana przez to niejednoznaczność była czasami celowa, na przykład, gdy znak zostałby użyty nieco inaczej w łączu terminalowym niż w strumieniu danych , a czasami przypadkowa, na przykład w znaczeniu „usuń”.
Prawdopodobnie najbardziej wpływowym pojedynczym urządzeniem na interpretację tych znaków był Teletype Model 33 ASR, który był terminalem drukującym z dostępną opcją czytnika/dziurkacza taśmy papierowej . Do lat 80. taśma papierowa była bardzo popularnym nośnikiem długoterminowego przechowywania programów, tańszym i pod pewnymi względami mniej kruchym niż taśma magnetyczna. W szczególności, przypisania maszyny Teletype Model 33 dla kodów 17 (Control-Q, DC1, znany również jako XON), 19 (Control-S, DC3, znany również jako XOFF) i 127 ( Delete ) stały się de facto standardami. Model 33 wyróżniał się również tym, że dosłownie brał opis Control-G (kod 7, BEL, co oznacza słyszalne ostrzeganie operatora), ponieważ urządzenie zawierało rzeczywisty dzwonek, który dzwonił, gdy otrzymał znak BEL. Ponieważ klawisz klawisza O również pokazywał symbol strzałki w lewo (z ASCII-1963, który miał ten znak zamiast podkreślenia ), niezgodne użycie kodu 15 (Control-O, Shift In) interpretowane jako „usuń poprzedni znak” został również przyjęty przez wiele wczesnych systemów współdzielenia czasu, ale ostatecznie został zaniedbany.
Gdy Teletype 33 ASR wyposażony w automatyczny czytnik taśmy papierowej otrzymał Control-S (XOFF, skrót oznaczający wyłączenie transmisji), spowodowało zatrzymanie czytnika taśmy; odbieranie Control-Q (XON, "transmisja włączona") spowodowało wznowienie działania czytnika taśm. Ta technika została przyjęta przez kilka wczesnych komputerowych systemów operacyjnych jako sygnał „uzgadniania” ostrzegający nadawcę, aby przerwał transmisję z powodu zbliżającego się przepełnienia; utrzymuje się do dziś w wielu systemach jako technika ręcznego sterowania wyjściem. W niektórych systemach Control-S zachowuje swoje znaczenie, ale Control-Q jest zastępowany przez drugi Control-S, aby wznowić produkcję. 33 ASR można również skonfigurować tak, aby wykorzystywał Control-R (DC2) i Control-T (DC4) do uruchamiania i zatrzymywania dziurkacza taśmy; w niektórych jednostkach wyposażonych w tę funkcję, odpowiednie litery znaku kontrolnego na klawiszu nad literą to odpowiednio TAPE i TAPE .
Usuń i Backspace
Teletype nie mógł cofnąć głowy, więc nie umieścił klawisza na klawiaturze, aby wysłać BS (backspace). Zamiast tego był oznaczony klucz, RUB OUTktóry wysyłał kod 127 (DEL). Celem tego klawisza było usunięcie błędów w ręcznie pisanej taśmie papierowej: operator musiał nacisnąć przycisk na dziurkaczu taśmy, aby go cofnąć, a następnie wpisać rubout, który przebił wszystkie dziury i zastąpił błąd znakiem, który miał być ignorowany. Teletypy były powszechnie używane w tańszych komputerach firmy Digital Equipment Corporation , więc systemy te musiały używać dostępnego klucza, a tym samym kodu DEL, aby usunąć poprzedni znak. Z tego powodu terminale wideo DEC (domyślnie) wysłały kod DEL dla klawisza oznaczonego „Backspace”, podczas gdy klawisz oznaczony „Delete” wysłał sekwencję ucieczki, podczas gdy wiele innych terminali wysłało BS dla klawisza Backspace. Sterownik terminala uniksowego mógł używać tylko jednego kodu do kasowania poprzedniego znaku, można to ustawić na BS lub DEL, ale nie na oba, co powodowało długi okres irytacji, w którym użytkownicy musieli to poprawiać w zależności od używanego terminala (powłoki które umożliwiają edycję wierszy, takie jak ksh , bash i zsh , rozumieją oba). Założenie, że żaden klawisz nie wysłał BS spowodowało, że Control+H zostało użyte do innych celów, takich jak polecenie prefiksu „pomoc” w GNU Emacs .
Ucieczka
Znacznie większej liczbie kodów sterujących nadano znaczenia zupełnie inne od ich pierwotnych. Na przykład znak „escape” (ESC, kod 27) pierwotnie miał umożliwiać wysyłanie innych znaków kontrolnych jako literałów zamiast wywoływania ich znaczenia. Jest to to samo znaczenie „ucieczki” występujące w kodowaniach adresów URL, ciągach języka C i innych systemach, w których niektóre znaki mają zastrzeżone znaczenie. Z biegiem czasu to znaczenie zostało dokooptowane i ostatecznie uległo zmianie. We współczesnym użyciu, ESC wysyłane do terminala zwykle wskazuje początek sekwencji poleceń, zwykle w postaci tak zwanego „ kodu ucieczki ANSI ” (lub, bardziej właściwie, „ wprowadzającego sekwencję sterowania ”) z ECMA-48 ( 1972) i jego następców, zaczynając od ESC, po którym następuje znak „[” (lewy nawias). ESC wysłany z terminala jest najczęściej używany jako znak pozapasmowy używany do zakończenia operacji, tak jak w edytorach tekstu TECO i vi . W graficznym interfejsie użytkownika (GUI) i systemach okienkowych ESC zazwyczaj powoduje przerwanie bieżącej operacji aplikacji lub całkowite jej zamknięcie (zakończenie).
Koniec linii
Nieodłączna niejednoznaczność wielu znaków kontrolnych, w połączeniu z ich historycznym wykorzystaniem, stworzyły problemy podczas przesyłania plików „zwykłego tekstu” między systemami. Najlepszym tego przykładem jest problem nowej linii w różnych systemach operacyjnych . Maszyny dalekopisowe wymagały, aby wiersz tekstu był zakończony zarówno „Powrotem karetki” (co przesuwa głowicę drukującą na początek wiersza), jak i „Wysuwem wiersza” (co przesuwa papier o jeden wiersz bez przesuwania głowicy drukującej). Nazwa „Powrót karetki” wzięła się stąd, że na ręcznej maszynie do pisania karetka trzymająca papier poruszała się, podczas gdy pozycja, w której paski uderzały o wstęgę, pozostawała nieruchoma. Całą karetkę trzeba było przesunąć (zwrócić) w prawo, aby ustawić lewy margines papieru dla następnej linii.
Systemy operacyjne DEC ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 , itp.) używały obu znaków do oznaczenia końca linii, aby urządzenie konsoli (pierwotnie maszyny Teletype ) mogło działać. Zanim pojawiły się tak zwane „szklane TTY” (później nazywane CRT lub terminalami), konwencja była tak dobrze ugruntowana, że kompatybilność wsteczna wymagała kontynuowania konwencji. Kiedy Gary Kildall stworzony CP / M był inspirowany przez niektórych konwencji interfejs wiersza poleceń użytych w grudniu „s RT-11 . Do czasu wprowadzenia PC DOS w 1981 r. firma IBM nie miała w tym żadnej ręki, ponieważ ich systemy operacyjne z lat 70. używały EBCDIC zamiast ASCII i były zorientowane na wejście kart perforowanych i wydruki linii, na których koncepcja powrotu karetki była bez znaczenia. PC DOS IBM (sprzedawany również jako MS-DOS przez Microsoft) odziedziczył tę konwencję, ponieważ był luźno oparty na CP/M, a Windows odziedziczył ją po MS-DOS.
Niestety, wymaganie dwóch znaków do oznaczenia końca wiersza wprowadza niepotrzebną komplikację i pytania, jak interpretować każdy znak, gdy napotkasz go samotnie. Aby uprościć sprawy, strumienie danych w postaci zwykłego tekstu , w tym pliki, w Multics używał samego wysuwu wiersza (LF) jako zakończenia wiersza. Unix i uniksowych systemów i amigowych systemów, przyjęła tę konwencję z Multics. Z drugiej strony oryginalne systemy Macintosh OS , Apple DOS i ProDOS używały samego powrotu karetki (CR) jako terminatora linii; jednak odkąd Apple zastąpił te systemy operacyjne systemem operacyjnym macOS opartym na systemie Unix , teraz używają również wysuwu wiersza (LF). Radio Shack TRS-80 również używał samotnego CR do zakańczania linii.
Komputery podłączone do ARPANETu obejmowały maszyny z systemami operacyjnymi takimi jak TOPS-10 i TENEX z zakończeniami linii CR-LF, maszyny z systemami operacyjnymi takimi jak Multics z zakończeniami linii LF oraz maszyny z systemami operacyjnymi takimi jak OS/360 reprezentujące linie liczba znaków, po której następują znaki wiersza i która używa EBCDIC zamiast ASCII. Telnet protokół zdefiniowany ASCII „ Sieć wirtualna Terminal ” (NVT), tak, że połączenia pomiędzy hostami z różnymi konwencjami kończący linię zestawów znaków i może być obsługiwany przez transmitowanie standardowy format tekstu w sieci. Telnet używał ASCII wraz z zakończeniami linii CR-LF, a oprogramowanie używające innych konwencji tłumaczyłoby między konwencjami lokalnymi i NVT. File Transfer Protocol przyjęła protokół Telnet, w tym korzystania z sieci terminal wirtualny, do stosowania przy przekazywaniu poleceń i przesyłania danych w domyślnym trybie ASCII. Zwiększa to złożoność implementacji tych protokołów, a także innych protokołów sieciowych, takich jak te używane do obsługi poczty e-mail i sieci WWW, w systemach nie korzystających z konwencji NVT CR-LF.
Koniec pliku/strumienia
Monitor PDP-6 i jego następca PDP-10 TOPS-10 wykorzystywały Control-Z (SUB) jako wskazanie końca pliku dla danych wejściowych z terminala. Niektóre systemy operacyjne, takie jak CP/M, śledziły długość pliku tylko w jednostkach bloków dyskowych i używały Control-Z do oznaczania końca rzeczywistego tekstu w pliku. Z tych powodów EOF lub end-of-file , był używany potocznie i konwencjonalnie jako trzyliterowy akronim Control-Z zamiast SUBstitute. Kod końca tekstu ( ETX ), znany również jako Control-C , był nieodpowiedni z różnych powodów, podczas gdy użycie Z jako kodu kontrolnego do zakończenia pliku jest analogiczne do zakończenia alfabetu i służy jako bardzo wygodne pomoc mnemoniczna . Historycznie powszechna i nadal rozpowszechniona konwencja wykorzystuje konwencję kodu ETX do przerywania i zatrzymywania programu poprzez strumień danych wejściowych, zwykle z klawiatury.
W bibliotekach C i konwencjach uniksowych znak null jest używany do zakończenia ciągów tekstowych ; takie zakończone znakiem NUL łańcuchy mogą być znane w skrócie jako ASCIZ lub ASCIIZ, gdzie Z oznacza „zero”.
Karta kodów kontrolnych
Dwójkowy | Październik | Grudzień | Klątwa | Skrót | Imię (1967) | |||||
---|---|---|---|---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||||||
000 0000 | 000 | 0 | 00 | ZERO | NUL | ␀ | ^@ | \0 | Zero | |
000 0001 | 001 | 1 | 01 | SOM | SOH | ␁ | ^A | Początek nagłówka | ||
000 0010 | 002 | 2 | 02 | EOA | STX | ␂ | ^B | Początek tekstu | ||
000 0011 | 003 | 3 | 03 | EOM | ETX | ␃ | ^C | Koniec tekstu | ||
000 0100 | 004 | 4 | 04 | EOT | ␄ | ^D | Koniec transmisji | |||
000 0101 | 005 | 5 | 05 | WRU | ENQ | ␅ | ^E | Zapytanie | ||
000 0110 | 006 | 6 | 06 | RU | POTWIERDZ | ␆ | ^F | Potwierdzenie | ||
000 0111 | 007 | 7 | 07 | DZWON | BEL | ␇ | ^G | \a | dzwon | |
000 1000 | 010 | 8 | 08 | FE0 | BS | ␈ | ^H | \b | Backspace | |
000 1001 | 011 | 9 | 09 | HT/SK | HT | ␉ | ^I | \T | Zakładka pozioma | |
000 1010 | 012 | 10 | 0A | LF | ␊ | ^J | \n | Podawanie linii | ||
000 1011 | 013 | 11 | 0B | VTAB | VT | ␋ | ^K | \v | Zakładka pionowa | |
000 1100 | 014 | 12 | 0C | FF | ␌ | ^L | \F | Kanał formularza | ||
000 1101 | 015 | 13 | 0D | CR | ␍ | ^M | \r | Zwrot karetki | ||
000 1110 | 016 | 14 | 0E | WIĘC | ␎ | ^N | Przesuń się | |||
000 1111 | 017 | 15 | 0F | SI | ␏ | ^O | Przesunięcie w | |||
001 0000 | 020 | 16 | 10 | DC0 | DLE | ␐ | ^P | Ucieczka łącza danych | ||
001 0001 | 021 | 17 | 11 | DC1 | ␑ | ^P | Kontrola urządzenia 1 (często XON ) | |||
001 0010 | 022 | 18 | 12 | DC2 | ␒ | ^R | Kontrola urządzenia 2 | |||
001 0011 | 023 | 19 | 13 | DC3 | ␓ | ^S | Kontrola urządzenia 3 (często XOFF ) | |||
001 0100 | 024 | 20 | 14 | DC4 | ␔ | ^T | Kontrola urządzenia 4 | |||
001 0101 | 025 | 21 | 15 | BŁĄDZIĆ | NAK | ␕ | ^U | Negatywne potwierdzenie | ||
001 0110 | 026 | 22 | 16 | SYNCHRONIZACJA | SYN | ␖ | ^V | Synchroniczny bezczynność | ||
001 0111 | 027 | 23 | 17 | LEM | ETB | ␗ | ^W | Koniec bloku transmisji | ||
001 1000 | 030 | 24 | 18 | S0 | MÓC | ␘ | ^X | Anulować | ||
001 1001 | 031 | 25 | 19 | S1 | EM | ␙ | ^Y | Koniec medium | ||
001 1010 | 032 | 26 | 1A | S2 | SS | POD | ␚ | ^Z | Zastąpić | |
001 1011 | 033 | 27 | 1B | S3 | WYJŚCIE | ␛ | ^[ | \mi | Ucieczka | |
001 1100 | 034 | 28 | 1C | S4 | FS | ␜ | ^\ | Separator plików | ||
001 1101 | 035 | 29 | 1D | S5 | GS | ␝ | ^] | Separator grupowy | ||
001 1110 | 036 | 30 | 1E | S6 | RS | ␞ | ^^ | Separator rekordów | ||
001 1111 | 037 | 31 | 1F | S7 | nas | ␟ | ^_ | Separator jednostek | ||
111 1111 | 177 | 127 | 7F | DEL | ␡ | ^? | Kasować |
Inne reprezentacje mogą być używane przez specjalistyczny sprzęt, na przykład grafika ISO 2047 lub liczby szesnastkowe .
Znaki do druku
Kody 20 hex do 7E hex , znane jako znaki drukowane, reprezentują litery, cyfry, znaki interpunkcyjne i kilka różnych symboli. Łącznie można wydrukować 95 znaków.
Kod 20 hex , znak „spacji” , oznacza spację między słowami, wytworzoną przez spację na klawiaturze. Ponieważ znak spacji jest uważany za niewidoczną grafikę (a nie znak kontrolny), jest wymieniony w poniższej tabeli zamiast w poprzedniej sekcji.
Szesnastkowy kod 7F odpowiada niedrukowalnemu znakowi kontrolnemu „usuń” (DEL) i dlatego został pominięty w tym wykresie; omówiono go w tabeli z poprzedniej sekcji. Wcześniejsze wersje ASCII używały strzałki w górę zamiast karetki (5E hex ) i lewej strzałki zamiast podkreślenia (5F hex ).
Dwójkowy | Październik | Grudzień | Klątwa | Glif | ||
---|---|---|---|---|---|---|
1963 | 1965 | 1967 | ||||
010 0000 | 040 | 32 | 20 | przestrzeń | ||
010 0001 | 041 | 33 | 21 | ! | ||
010 0010 | 042 | 34 | 22 | " | ||
010 0011 | 043 | 35 | 23 | # | ||
010 0100 | 044 | 36 | 24 | $ | ||
010 0101 | 045 | 37 | 25 | % | ||
010 0110 | 046 | 38 | 26 | & | ||
010 0111 | 047 | 39 | 27 | ' | ||
010 1000 | 050 | 40 | 28 | ( | ||
010 1001 | 051 | 41 | 29 | ) | ||
010 1010 | 052 | 42 | 2A | * | ||
010 1011 | 053 | 43 | 2B | + | ||
010 1100 | 054 | 44 | 2C | , | ||
010 1101 | 055 | 45 | 2D | - | ||
010 1110 | 056 | 46 | 2E | . | ||
010 1111 | 057 | 47 | 2F | / | ||
011 0000 | 060 | 48 | 30 | 0 | ||
011 0001 | 061 | 49 | 31 | 1 | ||
011 0010 | 062 | 50 | 32 | 2 | ||
011 0011 | 063 | 51 | 33 | 3 | ||
011 0100 | 064 | 52 | 34 | 4 | ||
011 0101 | 065 | 53 | 35 | 5 | ||
011 0110 | 066 | 54 | 36 | 6 | ||
011 0111 | 067 | 55 | 37 | 7 | ||
011 1000 | 070 | 56 | 38 | 8 | ||
011 1001 | 071 | 57 | 39 | 9 | ||
011 1010 | 072 | 58 | 3A | : | ||
011 1011 | 073 | 59 | 3B | ; | ||
011 1100 | 074 | 60 | 3C | < | ||
011 1101 | 075 | 61 | 3D | = | ||
011 1110 | 076 | 62 | 3E | > | ||
011 1111 | 077 | 63 | 3F | ? | ||
100 0000 | 100 | 64 | 40 | @ | ` | @ |
100 0001 | 101 | 65 | 41 | A | ||
100 0010 | 102 | 66 | 42 | b | ||
100 0011 | 103 | 67 | 43 | C | ||
100 0100 | 104 | 68 | 44 | D | ||
100 0101 | 105 | 69 | 45 | mi | ||
100 0110 | 106 | 70 | 46 | F | ||
100 0111 | 107 | 71 | 47 | g | ||
100 1000 | 110 | 72 | 48 | h | ||
100 1001 | 111 | 73 | 49 | i | ||
100 1010 | 112 | 74 | 4A | J | ||
100 1011 | 113 | 75 | 4B | K | ||
100 1100 | 114 | 76 | 4C | L | ||
100 1101 | 115 | 77 | 4D | m | ||
100 1110 | 116 | 78 | 4E | n | ||
100 1111 | 117 | 79 | 4F | O | ||
101 0000 | 120 | 80 | 50 | P | ||
101 0001 | 121 | 81 | 51 | Q | ||
101 0010 | 122 | 82 | 52 | r | ||
101 0011 | 123 | 83 | 53 | S | ||
101 0100 | 124 | 84 | 54 | T | ||
101 0101 | 125 | 85 | 55 | U | ||
101 0110 | 126 | 86 | 56 | V | ||
101 0111 | 127 | 87 | 57 | W | ||
101 1000 | 130 | 88 | 58 | x | ||
101 1001 | 131 | 89 | 59 | Tak | ||
101 1010 | 132 | 90 | 5A | Z | ||
101 1011 | 133 | 91 | 5B | [ | ||
101 1100 | 134 | 92 | 5C | \ | ~ | \ |
101 1101 | 135 | 93 | 5D | ] | ||
101 1110 | 136 | 94 | 5E | ↑ | ^ | |
101 1111 | 137 | 95 | 5F | ← | _ | |
110 0000 | 140 | 96 | 60 | @ | ` | |
110 0001 | 141 | 97 | 61 | a | ||
110 0010 | 142 | 98 | 62 | b | ||
110 0011 | 143 | 99 | 63 | C | ||
110 0100 | 144 | 100 | 64 | D | ||
110 0101 | 145 | 101 | 65 | mi | ||
110 0110 | 146 | 102 | 66 | F | ||
110 0111 | 147 | 103 | 67 | g | ||
110 1000 | 150 | 104 | 68 | h | ||
110 1001 | 151 | 105 | 69 | i | ||
110 1010 | 152 | 106 | 6A | J | ||
110 1011 | 153 | 107 | 6B | k | ||
110 1100 | 154 | 108 | 6C | ja | ||
110 1101 | 155 | 109 | 6D | m | ||
110 1110 | 156 | 110 | 6E | n | ||
110 1111 | 157 | 111 | 6F | o | ||
111 0000 | 160 | 112 | 70 | P | ||
111 0001 | 161 | 113 | 71 | Q | ||
111 0010 | 162 | 114 | 72 | r | ||
111 0011 | 163 | 115 | 73 | s | ||
111 0100 | 164 | 116 | 74 | T | ||
111 0101 | 165 | 117 | 75 | ty | ||
111 0110 | 166 | 118 | 76 | v | ||
111 0111 | 167 | 119 | 77 | w | ||
111 1000 | 170 | 120 | 78 | x | ||
111 1001 | 171 | 121 | 79 | tak | ||
111 1010 | 172 | 122 | 7A | z | ||
111 1011 | 173 | 123 | 7B | { | ||
111 1100 | 174 | 124 | 7C | POTWIERDZ | ¬ | | |
111 1101 | 175 | 125 | 7D | } | ||
111 1110 | 176 | 126 | 7E | WYJŚCIE | | | ~ |
Zestaw znaków
Punkty, które reprezentowały inny charakter w poprzednich wersjach (wersja z 1963 r. lub szkic z 1965 r.) są pokazane w ramkach. Punkty przypisane od wersji z 1963, ale poza tym niezmienione, są lekko zacienione w stosunku do kolorów legendy.
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _MI | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ 0 |
NUL 0000 |
SOH 0001 |
STX 0002 |
ETX 0003 |
EOT 0004 |
ENQ 0005 |
ACK 0006 |
BEL 0007 |
BS 0008 |
HT 0009 |
LF 000A |
VT 000B |
FF 000C |
CR 000D |
SO 000E |
SI 000F |
1_ 16 |
DLE 0010 |
DC1 0011 |
DC2 0012 |
DC3 0013 |
DC4 0014 |
NAK 0015 |
SYN 0016 |
ETB 0017 |
MOŻE 0018 |
EM 0019 |
SUB 001A |
ESC 001B |
FS 001C |
GS 001D |
RS 001E |
USA 001F |
2_ 32 |
SP 0020 |
! 0021 |
„ 0022 |
# 0023 |
0024 zł |
% 0025 |
& 0026 |
' 0027 |
( 0028 |
) 0029 |
* 002A |
+ 002B |
, 002C |
- 002D |
. 002E |
/ 002F |
3_ 48 |
0 0030 |
1 0031 |
2 0032 |
3 0033 |
4 0034 |
5 0035 |
6 0036 |
7 0037 |
8 0038 |
9 0039 |
: 003A |
; 003B |
< 003C |
= 003D |
> 003E |
? 003F |
4_ 64 |
@ 0040 |
0041 |
B 0042 |
C 0043 |
D 0044 |
E 0045 |
F 0046 |
G 0047 |
H 0048 |
I 0049 |
J 004A |
K 004B |
L 004C |
M 004D |
N 004E |
O 004F |
5_ 80 |
P 0050 |
P 0051 |
R 0052 |
S 0053 |
T 0054 |
U 0055 |
V 0056 |
W 0057 |
X 0058 |
Tak 0059 |
Z 005A |
[ 005B |
\ 005C |
] 005D |
^ 005E |
_ 005F |
6_ 96 |
` 0060 |
0061 |
b 0062 |
c 0063 |
d 0064 |
e 0065 |
f 0066 |
g 0067 |
h 0068 |
I 0069 |
j 006A |
k 006B |
L 006C |
m 006D |
n 006E |
o 006F |
7_ 112 |
p 0070 |
q 0071 |
R 0072 |
s 0073 |
t 0.074 |
U 0075 |
v 0076 |
w 0077 |
x 0078 |
y 0079 |
z 007A |
{ 007B |
| 007C |
} 007D |
~ 007E |
DEL 007F |
List Numer Interpunkcja Symbol Inne Nieokreślony Zmieniono postać z wersji z 1963 r. lub szkicu z 1965 r.
Posługiwać się
ASCII został po raz pierwszy użyty komercyjnie w 1963 roku jako siedmiobitowy kod dalekopisu dla sieci TWX (TeletypeWriter eXchange) firmy American Telephone & Telegraph . TWX pierwotnie używał wcześniejszego pięciobitowego ITA2 , który był również używany przez konkurencyjny system teledrukarek Telex . Bob Bemer wprowadził takie funkcje, jak sekwencja ucieczki . Jego brytyjski kolega Hugh McGregor Ross przyczynił się do spopularyzowania tej pracy – według Bemera „do tego stopnia, że kod, który miał stać się ASCII, został po raz pierwszy nazwany w Europie kodem Bemer–Ross ”. Ze względu na intensywną pracę nad ASCII Bemer został nazwany „ojcem ASCII”.
11 marca 1968 r. prezydent USA Lyndon B. Johnson nakazał, aby wszystkie komputery zakupione przez rząd federalny Stanów Zjednoczonych obsługiwały ASCII, stwierdzając:
Zatwierdziłem również zalecenia Sekretarza Handlu [ Luthera H. Hodgesa ] dotyczące standardów zapisywania Standardowego Kodeksu Wymiany Informacji na taśmach magnetycznych i papierowych, gdy są one używane w operacjach komputerowych. Wszystkie komputery i związane z nimi konfiguracje sprzętu wprowadzone do inwentarza rządu federalnego w dniu 1 lipca 1969 r. i po tej dacie muszą mieć możliwość używania standardowego kodu wymiany informacji oraz formatów wymaganych przez standardy dotyczące taśm magnetycznych i papierowych, gdy te nośniki są używane.
ASCII było najpopularniejszym kodowaniem znaków w sieci WWW do grudnia 2007 r., kiedy to kodowanie UTF-8 go wyprzedziło; UTF-8 jest wstecznie kompatybilny z ASCII.
Warianty i pochodne
W miarę rozpowszechniania się technologii komputerowej na całym świecie różne organy normalizacyjne i korporacje opracowały wiele odmian ASCII, aby ułatwić wyrażanie w językach innych niż angielski, które używają alfabetów rzymskich. Można zaklasyfikować niektóre z tych odmian jako „ rozszerzenia ASCII ”, chociaż niektórzy nadużywają tego terminu do reprezentowania wszystkich wariantów, łącznie z tymi, które nie zachowują mapy znaków ASCII w zakresie 7-bitowym. Ponadto rozszerzenia ASCII zostały również błędnie oznaczone jako ASCII.
7-bitowe kody
Od samego początku jego rozwoju, ASCII miał być tylko jednym z kilku narodowych wariantów międzynarodowego standardu kodu znaków.
Inne międzynarodowe organy normalizacyjne ratyfikowały kodowanie znaków, takie jak ISO 646 (1967), które są identyczne lub prawie identyczne z ASCII, z rozszerzeniami dla znaków spoza alfabetu angielskiego i symboli używanych poza Stanami Zjednoczonymi, takich jak symbol brytyjskiego funta szterlinga (Ł). Prawie każdy kraj potrzebował dostosowanej wersji ASCII, ponieważ ASCII odpowiadał potrzebom tylko Stanów Zjednoczonych i kilku innych krajów. Na przykład Kanada miała własną wersję, która obsługiwała francuskie znaki.
Wiele innych krajów opracowało warianty ASCII zawierające litery inne niż angielskie (np. é , ñ , ß , Ł ), symbole walut (np. £ , ¥ ) itd. Zobacz także YUSCII (Jugosławia).
Większość znaków miałaby wspólnego, ale przypisywałaby inne lokalnie użyteczne znaki do kilku punktów kodowych zarezerwowanych do „użycia krajowego”. Jednak cztery lata, które upłynęły między publikacją ASCII-1963 a pierwszą akceptacją międzynarodowej rekomendacji przez ISO w 1967 roku, spowodowały, że wybory ASCII dotyczące znaków narodowych wydawały się być de facto standardami dla świata, powodując zamieszanie i niezgodność, gdy inne kraje zaczęli tworzyć własne przypisania do tych punktów kodowych.
ISO/IEC 646, podobnie jak ASCII, to 7-bitowy zestaw znaków. Nie udostępnia żadnych dodatkowych kodów, więc te same punkty kodowe kodują różne znaki w różnych krajach. Kody ewakuacyjne zostały zdefiniowane, aby wskazać, który wariant narodowy dotyczy fragmentu tekstu, ale były one rzadko używane, więc często nie można było wiedzieć, z jakim wariantem pracować, a zatem, jaki znak reprezentuje kod, i ogólnie, tekst- systemy przetwarzania i tak poradziły sobie tylko z jednym wariantem.
Ponieważ znaki nawiasów klamrowych i nawiasów klamrowych ASCII zostały przypisane do punktów kodowych „zastosowania krajowego”, które były używane do liter akcentowanych w innych krajowych wariantach ISO/IEC 646, programista niemiecki, francuski, szwedzki itp. używający ich narodowej wersji ISO /IEC 646, zamiast ASCII, musiał pisać, a zatem czytać, coś takiego jak
ä aÄiÜ = 'Ön'; ü
zamiast
{ a[i] = '\n'; }
Trigrafy C zostały stworzone, aby rozwiązać ten problem dla ANSI C , chociaż ich późne wprowadzenie i niespójna implementacja w kompilatorach ograniczyły ich użycie. Wielu programistów trzymało swoje komputery na US-ASCII, więc zwykły tekst w języku szwedzkim, niemieckim itp. (na przykład w e-mailu lub Usenecie ) zawierał „{, }” i podobne warianty w środku słów, coś, co ci programiści otrzymali wykorzystywany do. Na przykład, szwedzki programista wysyłający e-mail do innego programisty z pytaniem, czy powinien iść na lunch, może otrzymać "N{ jag har sm|rg}sar" jako odpowiedź, która powinna brzmieć "Nä jag har smörgåsar", co oznacza "Nie, mam kanapki".
W Japonii i Korei, jeszcze od lat 2020, używana jest odmiana ASCII, w której ukośnik odwrotny (szesnastkowy 5C) jest renderowany jako ¥ ( znak jena , w Japonii) lub ₩ ( znak wygranej , w Korei). Oznacza to, że na przykład ścieżka pliku C:\Users\Smith jest pokazana jako C:¥Users¥Smith (w Japonii) lub C:₩Users₩Smith (w Korei).
8-bitowe kody
Ostatecznie, gdy komputery 8-, 16- i 32-bitowe (a później 64-bitowe ) zaczęły zastępować komputery 12- , 18- i 36-bitowe jako norma, powszechne stało się używanie 8-bitowych bajtów do przechowywania każdego znak w pamięci, dając możliwość rozszerzonym, 8-bitowym krewnym ASCII. W większości przypadków rozwinęły się one jako prawdziwe rozszerzenia ASCII, pozostawiając oryginalne odwzorowanie znaków nienaruszone, ale dodając dodatkowe definicje znaków po pierwszych 128 (tj. 7-bitowych) znakach.
Kodowanie obejmuje ISCII (Indie), VISCII (Wietnam). Chociaż te kodowania są czasami określane jako ASCII, prawdziwy ASCII jest ściśle określony tylko przez standard ANSI.
Większość wczesnych domowych systemów komputerowych opracowała własne 8-bitowe zestawy znaków zawierające glify do rysowania linii i gier, często wypełniając niektóre lub wszystkie znaki kontrolne od 0 do 31 większą ilością grafiki. Komputery Kaypro CP/M używały „górnych” 128 znaków alfabetu greckiego.
PETSCII kod Commodore International wykorzystywane do ich 8-bitowych systemów jest prawdopodobnie wyjątkowa wśród kodów pocztowych w 1970 jest oparty na kodzie ASCII-1963, zamiast bardziej powszechne ASCII-1967, tak jak ustalono w ZX Spectrum komputerze. Komputery Atari 8-bitowe i komputery Galaksija również używały wariantów ASCII.
IBM PC zdefiniował stronę kodową 437 , która zastąpiła znaki kontrolne symbolami graficznymi, takimi jak uśmiechnięte buźki i przyporządkowała dodatkowe znaki graficzne do górnych 128 pozycji. Systemy operacyjne, takie jak DOS, obsługiwały te strony kodowe, a producenci komputerów IBM PC obsługiwali je sprzętowo. Digital Equipment Corporation opracowała Wielonarodowego zestawu znaków (DEC-MCS) do stosowania w popularnej VT220 terminalu jako jeden z pierwszych rozszerzeń przeznaczonych dla języków międzynarodowych bardziej niż na ilustracjach blokowych. Macintosh zdefiniował Mac OS Roman, a Postscript również zdefiniował zestaw, oba zawierały zarówno litery międzynarodowe, jak i typograficzne znaki interpunkcyjne zamiast grafiki, bardziej jak współczesne zestawy znaków.
8859 ISO / IEC standardowy (pochodzący z dec-MCS) ostatecznie ze standardu, że większość systemów kopiowane (co najmniej tak dokładnie, jak to skopiowane ASCII, ale wiele podstawień). Popularne dalsze rozszerzenie zaprojektowane przez Microsoft, Windows-1252 (często błędnie oznaczone jako ISO-8859-1 ), dodało typograficzne znaki interpunkcyjne potrzebne do tradycyjnego drukowania tekstu. ISO-8859-1, Windows-1252 i oryginalny 7-bitowy ASCII były najczęstszymi kodowaniami znaków do 2008 roku, kiedy UTF-8 stał się bardziej powszechny.
ISO/IEC 4873 wprowadził 32 dodatkowe kody kontrolne zdefiniowane w zakresie szesnastkowym 80-9F , w ramach rozszerzenia 7-bitowego kodowania ASCII na system 8-bitowy.
Unicode
Unicode i ISO/IEC 10646 Universal Character Set (UCS) mają znacznie szerszy zakres znaków, a ich różne formy kodowania zaczęły szybko wypierać ISO/IEC 8859 i ASCII w wielu środowiskach. Podczas gdy ASCII jest ograniczone do 128 znaków, Unicode i UCS obsługują więcej znaków, oddzielając koncepcje unikalnej identyfikacji (przy użyciu liczb naturalnych zwanych punktami kodowymi ) i kodowania (do 8-, 16- lub 32-bitowych formatów binarnych, zwanych UTF-8 , UTF-16 i UTF-32 ).
ASCII zostało włączone do zestawu znaków Unicode (1991) jako pierwsze 128 symboli, więc 7-bitowe znaki ASCII mają te same kody numeryczne w obu zestawach. Dzięki temu UTF-8 może być wstecznie kompatybilny z 7-bitowym ASCII, ponieważ plik UTF-8 zawierający tylko znaki ASCII jest identyczny z plikiem ASCII zawierającym tę samą sekwencję znaków. Co ważniejsze, kompatybilność w przód jest zapewniona jako oprogramowanie, które rozpoznaje tylko 7-bitowe znaki ASCII jako specjalne i nie zmienia bajtów z najwyższym ustawionym bitem (co często ma miejsce w przypadku obsługi 8-bitowych rozszerzeń ASCII, takich jak ISO-8859-1) zachowa dane UTF-8 bez zmian.
Zobacz też
- 3568 ASCII , asteroida nazwana po kodowaniu znaków
- Kody alternatywne
- Ascii85
- Sztuka ASCII
- Kampania wstążki ASCII
- Łacina podstawowa (blok Unicode) (ASCII jako podzbiór Unicode)
- Rozszerzone ASCII
- Renderowanie znaków dziesiętnych HTML
- Jargon File , słownik slangu programistów komputerowych, który zawiera listę popularnych nazw slangowych dla znaków ASCII
- Lista zestawów znaków komputerowych
- Lista znaków Unicode
Uwagi
Bibliografia
Dalsza lektura
- Bemer, Robert William (1960). „Propozycja zgodności kodu znaków”. Komunikaty ACM . 3 (2): 71–72. doi : 10.1145/366959.366961 . S2CID 9591147 .
-
Bemer, Robert William (23.05.2003). „Babel of Codes przed ASCII: The 1960 Survey of Coded Character Sets: The Reasons for ASCII” . Zarchiwizowane od oryginału w dniu 17.10.2013 . Źródło 2016-05-09 , z:
- Bemer, Robert William (grudzień 1960). „Badanie reprezentacji kodowanych znaków”. Komunikaty ACM . 3 (12): 639–641. doi : 10.1145/367487.367493 . S2CID 21403172 .
- Smith, HJ; Williams, FA (grudzień 1960). „Badanie kodów kart dziurkowanych” . Komunikaty ACM . 3 (12): 642. doi : 10.1145/367487.367491 .
- Amerykański krajowy standardowy kod wymiany informacji . Amerykański Narodowy Instytut Norm . 1977.
- Robinson, GS; Cargill, C. (1996). „Historia i wpływ standardów komputerowych”. Komputer . 29 (10): 79–85. doi : 10.1109/2.539725 .
- Mullendore, Ralph Elvin (1964) [1963]. Ptak, Jan F. (red.). „O wczesnym rozwoju ASCII – Historia ASCII” . Książki naukowe JF Ptak (wyd. marzec 2012). Zarchiwizowane od oryginału w dniu 2016-05-26 . Źródło 2016-05-26 .
Zewnętrzne linki
- "Kontrole C0 i podstawowa łacina - zakres: 0000-007F" (PDF) . Standard Unicode 8.0 . Unicode, Inc. 2015 [1991]. Zarchiwizowane (PDF) od oryginału z dnia 2016-05-26 . Źródło 2016-05-26 .
-
Fischer, Eric. „Ewolucja kodów znaków, 1874-1968”. CiteSeerX 10.1.1.96.678 . Cytowanie dziennika wymaga
|journal=
( pomoc ) [1]