Előző Főoldal Következő

Az ékezetkódolások történelmi áttekintése

Bit, byte, ASCII

A számítástechnikában az adattárolás legelemibb egysége a bit, amely kétféle értéket (0-t vagy 1-et) vehet fel. A biteket nagyon ritkán használjuk önállóan, szinte mindig 8-asával byte-okká fogjuk össze. Egy byte 28=256 különböző értékkel rendelkezhet, így például teljesen magától értetődő módon egy 0-tól 255-ig terjedő egész számot lehet vele ábrázolni.

Természetesen alapvető igény, hogy byte-ok formájában ne csak a 0–255 egész számok tömkelegét tudjuk ábrázolni, hanem számtalan más dolgot is, például szöveget. A számítástechnika történetének kezdetén, a ’60-as években megalkották az ASCII kódkészletet. Ez a karakterkészlet a 0-tól 127-ig terjedő értékeknek feleltette meg az angol ábécé kis- és nagybetűit, a számjegyeket, az alapvető fontosságú írásjeleket, valamint számos speciális vezérlő karaktert. Habár más ehhez hasonló karakterkészletek is napvilágot láttak, az ASCII terjedt el világszerte, ma gyakorlatilag mindenütt ezt használják. Ebben például a kis „f” betűnek a 102-es, az „u” betűnek a 117-es, a „t” betűnek pedig a 116-os szám felel meg, így a „fut” szót a 102, 117, 116 bytesorozat ábrázolja.

8 bites kódolások

Az ASCII kódkészlet egyáltalán nem alkalmas ékezetes betűk ábrázolására. Mivel egyre nagyobb szükség lett arra, hogy a szoftverek ékezetes betűket is meg tudjanak jeleníteni, megjelentek az ékezetes betűket is támogató karakterkészletek. Ezek a 0-tól 127-ig terjedő értékek terén az ASCII kódtáblával megegyeznek, így garantálják az azzal való kompatibilitást, míg a 128-tól 255-ig terjedő értékekre különféle ékezetes betűket raknak.

Ezzel a megközelítéssel azonban van egy nagy gond. Nevezetesen az, hogy 128-nál lényegesen több ékezetes karaktert találni a különféle latin betűs nyelvekben, és ekkor még az egyéb írásokról nem is beszéltünk.

Megszületett az ISO-8859-1 (más néven Latin-1) karakterkészlet, amely a magyar nyelvből az ő és ű betűket nem tartalmazza, így alkalmatlan magyar szöveg ábrázolására. Megszületett az ISO-8859-2 (Latin-2), amely az összes magyar ékezetet tartalmazza. Születtek egyéb ISO-8859 kódlapok, a DOS által használt kódlapok (cp437, cp850, cp852 stb.), a Windows karakterkészletei (Windows-1250, Windows-1252 stb.), és sok-sok egyéb is.

A fentiek közül a Linux az ISO karakterkészleteket használta, így egészen a közelmúltig egy magyarra beállított Linux rendszer esetén teljesen természetes volt, hogy elvileg minden program a Latin-2 karakterkészletet használja. A Latin-2 kódolás az „ű” betűnek a 251-es érték felel meg, így például a „fűt” szót a 102, 251, 116 bytesorozat ábrázolja. Ha tehát Latin-2 kódolást használó rendszerben szövegfájlba írtuk ez a szót, vagy fájl nevének adtuk, az a háttérben az előbb említett bytesorozatként tárolódott.

Nézzük meg, mi történt, ha mondjuk ezt a fájlt odaadtuk egy francia felhasználónak. Mivel a Latin-2 nem képes a francia betűket ábrázolni, de a Latin-1 igen, ezért valószínűleg az ő rendszere Latin-1 karakterkészletre van beállítva. Megkapta valamilyen módon a 102, 251, 116 bytesorozatot, és az ő gépe ezt „fût”-nek jelenítette meg, hiszen a Latin-1 szabvány a 251-es értéket a kalapos û betűvel rendeli össze. Hasonlóképpen CP437 vagy CWI-2 kódolású számítógépen „f√t”, míg CP850 használata esetén „f¹t” jelent meg, hiszen ezek ismét másmilyen írásjelet tartalmaznak a 251-es pozíción.

Számtalan ehhez hasonló jellegű ékezetkezelési problémát okoz a különböző karakterkészletek használata.

A probléma gyökere, hogy rengeteg helyen pusztán a bytesorozat tárolódik el, az a plusz információ már nem, hogy ezen bytesorozatot mely karakterkészlet szerint kellene értelmezni. Ilyenkor elvi síkon képtelenség a szöveget helyesen megjeleníteni a felhasználó előtt; az alkalmazások általában a rendszer alapértelmezett karakterkészletét feltételezik, ami nyilván csak akkor jó tipp, ha ez megegyezik az adatot előállító gép karakterkészletével. Az ilyesmi kódlapok tehát legfeljebb olyan zárt környezetben tudnak jól működni, ahol egy adott nyelvet használunk, és adatainkat nem cseréljük ki más nyelvű felhasználókkal, nem visszük át vagy nem hozunk adatokat más nyelvi beállítású gépekre/gépekről. Ezzel összhangban több nyelv támogatására alkalmas szoftver fejlesztése során is problémák tömkelegét szüli ez a megközelítés.

További hátrány, hogy egy ilyen rendszerben képtelenség szövegünkbe idegen karaktereket beilleszteni (márpedig erre bármikor szükség lehet, például idegen tulajdonnevek leírásakor), arról nem is beszélve, hogy többnyelvű szövegek (például szótárak) elkészítése is lehetetlenség.

A fent felvázolt problémákra a megoldást csakis gyökeres szemléletváltással tudjuk elérni. Olyan rendszerre van szükség, amelyik mentes a számtalan karakterkészlet keltette zűrzavartól, mindegyik írásjel egyértelmű azonosítóval rendelkezik, függetlenül a nyelvtől, területi beállításoktól vagy bármi ilyesmitől, és ahol a rendszer nyelvétől függetlenül egyszerre használható az összes nyelv összes írásjele.


Előző Főoldal Következő