Rozšířené ASCII - Extended ASCII

Výstup programu ascii v Cygwinu

Rozšířené ASCII ( EASCII nebo vysoké ASCII ) kódování znaků jsou osmibitové nebo větší kódování, které zahrnují standardní sedmi- bit ASCII znaky, plus další znaky. Samotné použití výrazu „rozšířený ASCII“ je někdy kritizováno, protože ho lze mylně interpretovat v tom smyslu, že standard ASCII byl aktualizován tak, aby obsahoval více než 128 znaků, nebo že výraz jednoznačně identifikuje jediné kódování, z nichž ani jeden není případ.

Existuje mnoho rozšířených kódování ASCII (více než 220 kódových stránek DOS a Windows). EBCDIC („druhý“ hlavní 8bitový kód znaků) v průběhu desetiletí rovněž vyvinul mnoho rozšířených variant (více než 186 kódových stránek EBCDIC).

Dějiny

ASCII byl navržen v šedesátých letech pro teleprintery a telegrafii a některé výpočty. Časné dálnopisové tiskárny byly elektromechanické, neměly žádný mikroprocesor a jen tolik elektromechanické paměti, aby fungovaly. Plně zpracovali jeden znak po druhém a okamžitě poté se vrátili do nečinného stavu; to znamenalo, že jakékoli kontrolní sekvence musely mít pouze jeden znak dlouhý, a proto bylo pro tyto ovládací prvky nutné vyhradit velký počet kódů. Byly to nárazové tiskárny odvozené od psacího stroje a mohly tisknout pouze pevnou sadu glyfů, které byly odlity do prvku nebo prvků kovového typu; to také podpořilo minimální sadu glyfů.

Sedmbitový ASCII se zlepšil oproti předchozím pětibitovým a šestibitovým kódům. Z 2 7 = 128 kódů bylo 33 použito pro ovládací prvky a 95 pečlivě vybraných tisknutelných znaků (94 glyfů a jedna mezera), které obsahují anglickou abecedu (velká a malá písmena), číslice a 31 interpunkčních znamének a symbolů: všechny symboly na standardním psacím stroji v USA plus několik vybraných pro programovací úkoly. Některé populární periferie implementovaly pouze podmnožinu 64 znaků tisku: Teletype Model 33 nemohl přenášet „a“ prostřednictvím „z“ nebo pět méně běžných symbolů („“, „{“, „|“, „}“ a "~"). a když přijali takové znaky, místo toho vytiskli „A“ až „Z“ (vynutili všechna velká písmena ) a pět dalších většinou podobných symbolů („@“, „[“, „\“, „]“ a „^“) .

Znaková sada ASCII je sotva dostatečně velká pro použití v americké angličtině a postrádá mnoho glyfů běžných v sazbě a příliš malá pro univerzální použití. Mnoho dalších písmen a symbolů je žádoucích, užitečných nebo požadovaných k přímému znázornění jiných písmen abecedy než angličtiny, více druhů interpunkce a mezer, více matematických operátorů a symbolů (× ÷ ⋅ ≠ ≥ ≈ π atd.), Některé jedinečné použité symboly některými programovacími jazyky, ideogramy , logogramy , znaky kreslicími rámečky atd. Po celá léta byly aplikace navrženy kolem 64znakové sady a / nebo 95znakové sady, takže několik znaků získalo nové využití. Například v ASCII chybí „÷“, takže většina programovacích jazyků používá k označení dělení „/“.

Největším problémem pro uživatele počítačů po celém světě byly jiné abecedy. Anglická abeceda ASCII téměř vyhovuje evropským jazykům, pokud jsou písmena s diakritikou nahrazena písmeny bez přízvuku nebo aproximací dvou znaků. Okamžitě se objevily upravené varianty 7bitového ASCII, které obchodovaly s méně používanými symboly za velmi žádané symboly nebo písmena, jako je například nahrazení „#“ za „£“ u britských dálnopisů, „\“ za „¥“ v Japonsku nebo „₩“ v Koreji atd. Výsledkem bylo nejméně 29 sad variant. 12 kódových bodů bylo upraveno alespoň jednou upravenou sadou a zbylo pouze 82 „neměnných“ kódů . Programovací jazyky však mnoha nahrazeným znakům přidělovaly význam, byla navržena alternativní řešení, například C tříznakové sekvence „?? (“ a „??)“, které představují „{“ a „}“. Jazyky s odlišnými základními abecedami mohou používat přepis, jako je nahrazení všech latinských písmen písmeny v nejbližší shodě s cyrilicí (výsledkem je lichý, ale poněkud čitelný text, když byla angličtina vytištěna v azbuce nebo naopak). Schémata byla také navržena tak, aby bylo možné přetisknout dvě písmena (často s ovládáním backspace mezi nimi) za vzniku písmen s diakritikou. Uživatelé nebyli spokojeni s žádným z těchto kompromisů a byli často špatně podporováni.

Když se počítače a periferní zařízení v 70. letech standardizovaly na osmibitové bajty , bylo zřejmé, že počítače a software dokážou zpracovávat text, který používá sady 256 znaků, téměř bez dalších nákladů na programování a bez dalších nákladů na úložiště. (Za předpokladu, že nepoužitý 8. bit každého bajtu nebyl nějakým způsobem znovu použit, například kontrola chyb, logická pole nebo zabalení 8 znaků do 7 bajtů.) To by umožnilo použití ASCII beze změny a poskytlo by dalších 128 znaků. Mnoho výrobců navrhlo 8bitové znakové sady skládající se z ASCII a až 128 nepoužitých kódů. Vzhledem k tomu, že východní Evropa byla v té době politicky oddělená, bylo možné vytvořit 8bitové kódování, které pokrývalo všechny více používané evropské (a latinskoamerické) jazyky, jako je dánština, holandština, francouzština, němčina, portugalština, španělština, švédština a další, často zvané „latina“ nebo „římština“

128 dalších znaků stále nestačí k pokrytí všech účelů, všech jazyků nebo dokonce všech evropských jazyků, takže vznik mnoha proprietárních a národních 8bitových znakových sad odvozených z ASCII byl nevyhnutelný. Překlad mezi těmito sadami ( překódování ) je složitý (zvláště pokud znak není v obou sadách); a často to nebylo hotové, což produkovalo mojibake ( poločitelný výsledný text, uživatelé se často naučili, jak jej ručně dekódovat). Na konci 90. let došlo nakonec k pokusům o spolupráci nebo koordinaci ze strany národních a mezinárodních normalizačních orgánů, ale výroba proprietárních sad zůstala zdaleka nejpopulárnější, především proto, že normy vylučovaly mnoho populárních postav.

Proprietární rozšíření

Na sálových počítačích a minipočítačích jiných než EBCDIC , zejména na univerzitách, se objevily různé vlastní úpravy a rozšíření ASCII .

Hewlett-Packard začal přidávat evropské znaky do své rozšířené 7bitové / 8bitové znakové sady ASCII HP Roman Extension kolem 1978/1979 pro použití s ​​jejich pracovními stanicemi, terminály a tiskárnami. Toto se později vyvinulo v široce používané běžné 8bitové znakové sady HP Roman-8 a HP Roman-9 (stejně jako řada variant).

Domácí počítače Atari a Commodore přidaly do svých nestandardních ASCII mnoho grafických symbolů (respektive ATASCII a PETSCII , založených na původním standardu ASCII z roku 1963).

Znaková sada TRS-80 pro TRS-80 domácího počítače přidá 64 semigraphics znaky (0x80 přes 0xBF), které implementovány s nízkým rozlišením blokových grafiku. (Každý blokový grafický znak je zobrazen jako mřížka 2 x 3 pixelů, přičemž každý pixel bloku je účinně řízen jedním z dolních 6 bitů.)

IBM představila osmibitové rozšířené kódy ASCII na původním počítači IBM PC a později vytvořila variace pro různé jazyky a kultury. IBM nazvala takové znakové sady kódovými stránkami a přiřazovala čísla jak těm, které sami vynalezli, tak i mnoha vynálezům a používáním jiných výrobců. V souladu s tím jsou znakové sady velmi často označovány číslem jejich kódové stránky IBM. Na kódových stránkách kompatibilních s ASCII si dolních 128 znaků zachovalo své standardní hodnoty US-ASCII a v horních 128 znacích bylo možné zpřístupnit různé stránky (nebo sady znaků). Počítače DOS vytvořené pro severoamerický trh například používaly kódovou stránku 437 , která obsahovala znaky s diakritikou potřebné pro francouzštinu, němčinu a několik dalších evropských jazyků, stejně jako některé grafické znaky pro kreslení čar. Větší znaková sada umožňovala vytvářet dokumenty v kombinaci jazyků, jako je angličtina a francouzština (ačkoli francouzské počítače obvykle používají kódovou stránku 850 ), ale ne například v angličtině a řečtině (což vyžadovalo kódovou stránku 737 ).

Apple Computer představil své vlastní osmibitové rozšířené ASCII kódy v Mac OS , jako je Mac OS Roman . Apple LaserWriter také představil znakovou sadu Postscript .

Společnost Digital Equipment Corporation (DEC) vyvinula nadnárodní znakovou sadu , která měla méně znaků, ale více písmenných a diakritických kombinací. Byl podporován počítačovými terminály VT220 a novějšími DEC . To se později stalo základem pro další znakové sady, jako je Lotus International Character Set (LICS), ECMA-94 a ISO 8859-1 .

ISO 8859 a vlastní úpravy

Nakonec ISO vydala tento standard jako ISO 8859 popisující vlastní sadu osmibitových rozšíření ASCII. Nejpopulárnější je ISO 8859-1 , nazývaná také ISO Latin 1 , která obsahovala znaky dostatečné pro nejběžnější západoevropské jazyky. Varianty byly standardizovány i pro jiné jazyky: ISO 8859-2 pro východoevropské jazyky a ISO 8859-5 pro azbuku.

Jedním z pozoruhodných způsobů, kterými se znakové sady ISO liší od kódových stránek, je to, že pozice znaků 128 až 159, odpovídající řídicím znakům ASCII s bitovou sadou vysokého řádu, jsou v normách ISO konkrétně nepoužívány a nedefinovány, i když se často používaly pro tisknutelné znaky na proprietárních kódových stránkách, porušení norem ISO, které bylo téměř univerzální.

Společnost Microsoft později vytvořila kódovou stránku 1252 , kompatibilní nadmnožinu ISO 8859–1 s dalšími znaky v nepoužitém rozsahu ISO. Kódová stránka 1252 je standardní kódování znaků západoevropských jazykových verzí systému Microsoft Windows , včetně anglických verzí. ISO 8859-1 je běžné 8bitové kódování znaků používané systémem X Window System a většina internetových standardů jej používala před Unicode .

Zmatek znakové sady

Význam každého bodu rozšířeného kódu se může v každém kódování lišit. Aby bylo možné správně interpretovat a zobrazit textová data (sekvence znaků), která obsahují rozšířené kódy, hardware a software, který čte nebo přijímá text, musí používat konkrétní rozšířené kódování ASCII, které se na něj vztahuje. Použití nesprávného kódování způsobí iracionální substituci mnoha nebo všech rozšířených znaků v textu.

Software může použít fixní výběr kódování nebo si může vybrat z palety kódování pomocí výchozího nastavení, kontroly národního a jazykového nastavení počítače, čtení deklarace v textu, analýzy textu , dotazování uživatele, umožnění uživateli vybrat nebo přepsat, a / nebo výchozí pro poslední výběr. Při přenosu textu mezi počítači, které používají různé operační systémy, software a kódování, může být použití nesprávného kódování běžné.

Protože úplná anglická abeceda a nejpoužívanější znaky v angličtině jsou obsaženy v sedmbitových kódových bodech ASCII, které jsou společné pro všechna kódování (dokonce i většinu proprietárních kódování), je text v anglickém jazyce méně poškozen jeho interpretací pomocí špatné kódování, ale text v jiných jazycích se může zobrazit jako mojibake (úplný nesmysl). Protože mnoho internetových standardů používá ISO 8859-1 a protože Microsoft Windows (využívající nadstandardní sadu ISO 8859-1 s kódovou stránkou 1252) je dnes dominantním operačním systémem pro osobní počítače, neohlášené používání ISO 8859-1 je zcela běžné a může obecně se předpokládá, pokud není uvedeno jinak.

Mnoho komunikačních protokolů , především SMTP a HTTP , vyžaduje, aby bylo kódování znaků obsahu označeno identifikátory znakových sad přiřazených IANA .

Vícebajtové kódování znaků

Některá vícebajtová kódování znaků (kódování znaků, která dokáží zpracovat více než 256 různých znaků) jsou také opravdově rozšířená ASCII. To znamená, že všechny znaky ASCII jsou kódovány jediným bajtem se stejnou hodnotou jako ASCII a tyto hodnoty se nikde jinde nepoužívají. Lze je použít ve formátech souborů, kde se pro klíčová slova a syntaxi formátu souboru používají pouze bajty ASCII, zatímco bajty 0x80-0xFF lze použít pro volný text, včetně většiny programovacích jazyků, kde klíčová slova jazyka, názvy proměnných a názvy funkcí musí být v ASCII, ale řetězcové konstanty a komentáře mohou používat znaky jiné než ASCII. Díky tomu je mnohem jednodušší zavést vícebajtovou znakovou sadu do stávajících systémů, které používají rozšířené ASCII.

UTF-8 je skutečně rozšířený ASCII, stejně jako některá kódování Extended Unix Code .

ISO / IEC 6937 není rozšířena ASCII, protože její kódový bod 0x24 odpovídá obecnému znaku měny (¤) spíše než znaku dolaru ($), ale jinak je, pokud považujete páry přízvuk + písmeno za rozšířený znak následovaný ten ASCII.

Shift JIS není skutečný rozšířený ASCII. Kromě nahrazení zpětného lomítka znakem jenu mohou vícebajtové znaky obsahovat také bajty ASCII. Vyhýbá se použití oddělovačů a ovládacích prvků ASCII, takže v mnoha případech, jako je HTML, to může fungovat. UTF-16 je ještě méně rozšířený ASCII, protože znaky ASCII jsou uloženy jako dva bajty s jedním bajtem rovným 0x00. Přenos existujícího systému na podporu znakových sad jako Shift JIS nebo UTF-16 je komplikovaný a náchylný k chybám.

Použití v počítačově čitelných jazycích

U programovacích jazyků a jazyků dokumentů, jako jsou C a HTML , je důležitý princip rozšířeného ASCII, protože umožňuje mnoho různých kódování, a proto je mnoho lidských jazyků podporováno s malým dodatečným programovacím úsilím v softwaru, který interpretuje počítačově čitelné jazykové soubory .

Princip rozšířeného ASCII znamená, že:

  • všechny ASCII bajty (0x00 až 0x7F) mají stejný význam ve všech variantách rozšířeného ASCII,
  • bajty, které nejsou bajty ASCII, se používají pouze pro volný text a ne pro tagy, klíčová slova nebo jiné funkce, které mají pro interpretační software zvláštní význam.

Viz také

Reference

externí odkazy