Unicode

A Programozás Wiki wikiből

A Unicode egy ipari szabvány, amely az emberiség által használt írásrendszerek legtöbbjének egységes, konzisztens kezelését teszi lehetővé. A szabvány legfontosabb része egy egységes kódlap, amely minden írásjelhez egy 21 bites kódot rendel, és 1 114 112 különböző írásjel ábrázolására képes. Magán a kódlapon kívül a szabvány tartalmazza az egyes írásjelek tulajdonságait (pl. kis-nagybetű párok), az ábécésorrend szabályait különböző nyelvekben, valamint a jobbról balra és balról jobbra írt részeket egyaránt tartalmazó szövegek kirajzolási szabályait. A szabvány kifejezett célja, hogy felváltsa az eddig használt kódlapokat illetve kódolásokat, amelyek általában csak egy vagy két írásrendszert támogatnak.

A szabvány első változata (Unicode 1.0, 1991) még minden karakterhez 16 bites kódot rendelt, ezzel csak 65 536 írásjel ábrázolása volt lehetséges. Ez bizonyos megszorításokkal elégnek tűnt az összes modern nyelv igényeinek kielégítésére, de nem volt képes ábrázolni a kínai, japán illetve koreai nyelvek által ritkán használt karaktereket. A második változat (Unicode 2.0, 1996) vezette be a 21 bites kódokat, ezzel egy időben 17, egyenként 65 536 karaktert tartalmazó "síkra" osztotta a kódtáblát. Az eddig bevezetett karakterek a nulladik síkba kerültek, amelyet visszamenőlegesen az "alapvető többnyelvű síknak" (Basic Multilingual Plane, BMP) neveztek el. A kibővített kódlapban már helyet kaphattak a kihalt írásrendszerek valamint a ritkán használt kínai karakterek is.

A kódlap nyelvfüggetlensége miatt sok környezet alkalmazza azt a szövegek belső ábrázolására. Egyes rendszerek (pl. a Windows NT operációs rendszer és a Java programnyelv) az 1.0-ás verziót alapul véve minden karaktert 16 biten ábrázolnak, mivel fejlesztésük még a 2.0-ás változat megjelenése előtt történt. Az ilyen rendszerekben a BMP-n kívül eső karakterek ábrázolása lehetséges, de kezelésük körülményesebb.

A szabvány több kódolási sémát is tartalmaz, amelyekkel Unicode kódpontok sorozata bájtok sorozatává alakítható. Ezek közül a legfontosabbak:

  • UTF-8: Helytakarékos ábrázolás, amely a lehető legnagyobb visszafelé kompatibilitásra törekszik. Unix és unix-like rendszereken népszerű ábrázolásmód, mivel a C standard könyvtár függvényei viszonylag jól kezelik, és a Unicode-ot nem kezelő programok is képesek dolgozni vele bizonyos megszorításokkal. Hálózati kommunikációnál is elterjedt a használata, részben helytakarékossága, részben visszafelé kompatibilitása miatt.
  • UTF-16: A BMP karaktereihez fixen két bájtot rendel (a karakter kódpontjának értékét), míg a többi sík karaktereit először két 16 bites értékre bontja, és azokat egymás után tárolja. A Unicode 2.0 előtt ez volt a legkönnyebben kezelhető formátum, hiszen minden karaktert pontosan két bájton ábrázolt, és a memóriában 16 bites egészek tömbjeként lehetett ábrázolni. Két variánsa lehetséges annak függvényében, hogy a kódpont magas vagy az alacsony helyi értékű bájtját tároljuk először.
  • UTF-32: Minden karakterhez négy bájtot rendel, a karakter kódpontjának értékét. Mivel a kódpontok 21 bitesek, karakterenként legalább 11 bit tárhelyet mindig elpazarol. A Unicode 2.0 óta ez a legkönnyebben kezelhető formátum, hiszen itt tényleg minden karakter ugyanakkora helyet foglal, nem csak a BMP karakterei. Itt is két variáns lehetséges: a bájtokat lehet helyi érték szerint növekvő, illetve csökkenő sorrendben tárolni.


Külső hivatkozás[szerkesztés]