Unicode

A HupWiki-ből...

Az Unicode eredetileg arra lett kitalálva, hogy megszűnjön az ASCII kódolás kiegészítéseként megjelent különböző kódlapok által generált káosz. Az eredetileg 7 bites ASCII a számítógépeknek értelmesebb 8 biten jelent meg, így viszont kihasználatlan maradt 128 hely. Erre a kihasználatlan helyre kerültek a különböző nyelvekhez igazított karakterkiegészítések. (Például magyar-hoz a ISO8859-2, WIN1252, 852, stb) Ez természetesen teljesen felszabdalta a világon elérhető karaktereket, és ugyanaz a szöveg más-más kódolással teljesen máshogy nézett ki (igazából totál értelmetlen lett).

Két fontos fogalmat érdemes az Unicode kapcsán megemlíteni:

  • kódpont (code point): az összes definiált Unicode-karakter közül hányadik az adott karakter.
  • kódolási forma (encoding form): a kódpont hordozta információt hogyan képezik le a számítógép által kezelt bitekre. Jelenleg három kódolási formát definiál a szabvány: UTF-8 (melyben az első 128 kódpont reprezentációja megegyezik az US-ASCII reprezentációkkal, és sehol sem szerepel string közepén 0x00 bájt), UTF-16, UTF-32.

Az Unicode eredetileg 16 bitbe akarta bezsúfolni a világon előforduló összes karaktert, aztán rájöttek, hogy a sokféle távol-keleti nyelvet egyszerre nem lehet ennyi kódponttal kielégíteni. A jelenleg (2004 márciusa) definiált legmagasabb sorszámú kódpont a 0x10FFFF, a 16 bitet tehát már szépen meghaladták. Ennyi kódponton elfér az összes latin, görög, kínai, japán, ékezetes, speciális, stb. karakter.

Két lehetséges probléma az Unicode-dal ismerkedőknek:

  • Egy karakter nem feltétlenül csak egyféle kódponttal írható le. Vannak ugyanis ún. kombinálódó karakterek, melyek módosítják az előttük (vagy mögöttük?) FIXME álló kódpont jelentését. Így például az "á" karakter leírható magával az "á"-nak megfelelő kódponttal, és leírható az "a" karakter kódpontjának valamint a kombinálódó egyes hosszú ékezet kódpontjának egymásutánjával.
  • Két különböző kódpont is hordozhatja ugyanazt az írásképet (glyph). Legismertebb példa erre a latin kis "c" és az orosz kis "sz" írásképének egybeesése. (Ebből már biztonsági hiba is volt: a Microsoft kénytelen volt kiadni egy biztonsági riasztást, hogy nem minden "microsoft.com"-ra hivatkozó digitális tanúsítványban szabad megbízni -- a csaló tanúsítvány természetesen a két "c" reprezentációjában tért el.)

Külső hivatkozások