UCS

Az ISO/IEC 10646 által meghatározott nemzetközi szabvány határozza meg az Universal Character Set (UCS) – az univerzális karakterkészlet – szabványt a karakterkódolásra. A szabvány közel százezer absztrakt karaktert tartalmaz, mindegyikhez egy egyedi név és egy egész szám van rendelve, amit kódnak vagy kódpontnak neveznek.

A karakterek (betűk, számok, szimbólumok, ideogrammák, logogrammák stb.) a világ több nyelvéből, írásrendszeréből származnak, és egyedi kódjuk van az UCS-ben. Kizárólag az UCS az, amelyet folyamatosan bővítenek a benne még nem szereplő írásrendszer jeleivel.

1991-től az Unicode Consortium dolgozik együtt az ISO-val a The Unicode Standard ("Unicode") és az ISO/IEC 10646 együttes kifejlesztésén. A repertoár (lefedett írások, nyelvek és jelek), a karakterek nevei és kódok a Unicode 2.0 változatnál pontosan megegyeznek az ISO/IEC 10646-1:1993 és annak első hét Kiegészítése esetében. A 2000 februárjában nyilvánosságra hozott Unicode 3.0 megfelel az USC ISO/IEC 10646-1:2000 szerinti módosításainak.

Az UCS több, mint 1,1 millió kódot tartalmaz, de csak az első 65 536 (az Alap többnyelvű lap – Basic Multilingual Plane, vagy röviden csak BMP) került a 2000 előtti általánosan használt változatba. Ez a helyzet akkor kezdett változni, mikor a Kínai Népköztársaság 2000-ben megbízást kapott arra, hogy területén az eladott számítógép rendszerek támogassák a GB18030 szabványt, ami azt jelentette, hogy a Kínában eladott számítógép rendszereknek a BMP-n túli kódokat (területeket) is használniuk kellett.

A rendszer készakarva hagy sok kódot szabadon (nincs karakter hozzá rendelve), még a BMP-n belül is. Ez a megoldás biztosítja, hogy a jövőben történő bővítések okozta konfliktusokat minimalizálják a különböző kódolási formák között.

Az Universal Character Set kódolási formái

[szerkesztés]

Az ISO 10646 számos karakter kódolási formátumot definiál az UCS számára. A legegyszerűbb, az UCS-2, egyedülálló kódértékeket használ minden karakterre (a kódokat egy vagy több szám határozza meg) 0 és 65 535 között, és megengedi, hogy pontosan két byteon (egy 16 bites szóban) legyen megjelenítve az adott kódérték. Az UCS-2 ezért megengedi a BMP minden kódjának bináris megjelenítését, de nem engedi meg a BMP-n kívüli kódok (és így karakterek) megjelenítését.

Az USC eredeti kiadásának Első Kibővítése határozta meg az UTF-16-ot, az UCS-2 egy bővítését, amely képes megjeleníteni a BMP-n kívüli kódokat is. A BMP S (Speciális) zónájában bizonyos kódokhoz nincsenek karakterek rendelve. Az UCS-2 nem engedi meg ezeknek a kódoknak a használatát, de az UFT-16 megengedi, a párok segítségével. Minden pár egy "RC-elemet" (két 8 bites sorozat alkot egy R "elemet", és C "elem" pedig négy 8 bites sorozatból áll) tartalmaz. Az Unicode szintén alkalmazta az UTF-16-os megoldást.

Másik kódolási eljárás, az UCS-4, egy értéket használ 0 és (elméletileg) hexadecimális 7FFFFFFF között egy-egy karakterre (bár az UCS megáll a 10FFFF értéknél, az ISO/IEC 10646-nál minden jövőbeli karakter számára elegendő lesz ez a tartomány). Az UCS-4 minden értéket pontosan 4 byte-on jelenít meg (egy 32 bites szó). Fentiek alapján az UCS-4 minden UCS kód értéket meg tud jeleníteni bináris formában, ideértve a BMP-n kívüli kódokat is. Mint ahogyan az UCS-2, az UCS-4 is fix hosszúságú, byte méretű kódértékeke használ, amelyekt így könnyű és egyszerű kezelni, csak kétszer akkora tároló szükséges hozzá, mint az UCS-2 esetében.

Néha, bizonyos Unicode-ről szóló cikkekben úgy hivatkoznak az UCS-2-ra, mint "UCS-16". Valójában UCS-16 nem létezik; a szerzők többnyire vagy UCS-2-re, vagy UTF-16-ra akarnak hivatkozni.

Az ISO 10646 története

[szerkesztés]

Az International Organization for Standardization (ISO) nemzetközi szervezet 1989-ben úgy döntött, hogy kidolgoz egy univerzális karakterkészletet és annak kódolását, Hugh McGregor Ross vezetésével. Az ISO 10646 munkaanyagát először 1990-ben publikálták. A jelenlegi szabvány eléggé eltér már az első munkaanyagtól. 128 csoportot határoztak meg, minden csoport 256 lapból áll. Egy lap 256 sorból áll, soronként 256 cellával. Így összesen 2 147 483 648 karakter kódolható, de az aktuális szabvány változat "csak" 679 477 248 karaktert kezel, mivel a szabvány szerint a (0x00 és 0x1F valamint a 0x80 és 0x9F közötti értékek, hexadecimális jelöléssel) bárhol vezérlő karakternek vannak fenntartva. Például, a latin A nagybetű helye a kódtáblában a 0x20-as csoport 0x20-as lapjának 0x20-as sorának 0x41-es cellájában van.

Eredetileg egy karakter lehetséges kódját az ISO 10646 szabvány szerint a következő három módon lehet meghatározni:

  1. UCS-4, egy karakterhez egy 4 byte-os értéket rendel, minden karakter kódolható;
  2. UCS-2, egy karakterhez egy 2 byte-os értéket rendel, egyenesen kódolható az első lap, (0x20, a BMP) az első 36,864 kódérték, és másik lapokra vagy csoportokra az ISO 2022 szabványban leírt eszkép szekvenciákkal lehet átkapcsolni;
  3. UTF-1, egy karakterhez egy változó hosszúság byte sorozatot (1-5 byte, amelyek közül egyik sem lehet vezérlő karakter kóddal megegyező tartalmú) rendel.

1990-ben ezért két univerzális karakter kódolási megoldás létezett tehát: a Unicode, 16 bit/karakter (65,536 lehetséges karakter), és az ISO 10646. A szoftver gyártók elutasították a bonyolult és nagy helyigényű ISO szabvány elfogadását. A szabványosítók felismervén, hogy munka így nem folytatható, lépéseket tettek a szabványuk és az Unicode egységesítése felé. Két lehetőség is felmerült: megemelni a kezelhető karakterek számít (kitiltva a vezérlő karaktereket), ez a megoldás a karakterkódokat kiterjeszti a 0x0000101F értékig; szinkronitás megteremtése az Alap Többnyelvű Lap (BMP) által lefedett karakterkészlet és az Unicode között.

Az idő előrehaladtával a helyzet változott, mivel maga az Unicode is megváltozott: a 65 536 karakter nem tűnt elegendőnek, a szabvány 2.0-s változata már képes volt 1 112 064 karakter kódolására a már említett UTF-16 bővítő mechanizmusával. Ennek eredményeként az ISO 10646 korlátozta az UFT-16 módszerrel kódolandó karakterek számát, így az kicsit több, mint 1 millió lett, a 2 000 millió helyett. Az ISO 10646 UCS-4 szerinti kódolása az Unicode korlátozásként megjelent a szabványban (korlátozás az UTF-16 tartományra) és UTF-32/UCS-4 néven megjelentek. Ami az UFT-1-et illeti, azt senki sem használta, mivel rosszul tervezték (nem lehetett megkülönböztetni az egy byte-os kódértéket egy vezető vagy záró byte-tól, hasonló probléma volt a japán Shift-JIS kódolásával) és nagyon rossz teljesítményt is nyújtott (a sok osztási művelet miatt). Rob Pike és Ken Thompson, a Plan 9 operációs rendszer tervezői kitaláltak egy új, gyors és jól tervezett, kevert kódolási rendszert, amely UTF-8 néven lett ismert.

Az ISO 10646 és Unicode közötti különbségek

[szerkesztés]

Az ISO 10646 és a Unicode bizonyos szinten azonos – azonos karakterekhez azonos értékek tartoznak mindkét szabványban. Alapvető különbség az, hogy a Unicode kiegészült olyan szabályokkal és specifikációkkal, amelyek kívül esnek az ISO 10646 hatókörén. Az ISO 10646 tulajdonképpen egy egyszerű karakterkészlet, mintegy a korábbi ISO 8859 egy bővítése. Ezzel szemben, a Unicode bővítései kiterjednek egyeztetési szabályokra, a formák normalizálására, egy kétirányú algoritmusra a héberszerű és arab írás kezelésére. A különböző platformok közötti együttműködéshez, különösen a kétirányú írást használók esetében , az ISO 10646 támogatása önmagában nem elegendő; szükséges a Unicode implementálása.

Néhány alkalmazás támogatja az ISO 10646 karaktereket, de nem támogatja teljesen a Unicode-ot. Ilyen alkalmazás a Linux xterm, ami képes megjeleníteni az összes ISO 10646 karaktert, amelyek egy-az-egyben megfelelnek az egy-karakter-egy-glifa elrendezésnek, és egyedi and a single directionality. Képes kezelni néhány összetett jelet egy egyszerű felüljelző módszerrel, de nem tudja megjeleníteni a hébert (kétirányúan), a dévanágarit (egy karakter több glifa) vagy az arabot. A legtöbb GUI alkalmazás szabványos OS rutinokat használ az írások megjelenítésére, azonban az alkalmazások önmaguk nem mindig képesek a különböző írások kezelésére. Például, a Mozilla Firefox esetében a nem kezelhető írást egyszerűen átugorja.

Hivatkozás a Universal Character Set-re

[szerkesztés]

Az ISO 10646, mint általános, informális hivatkozás az ISO/IEC 10646 szabvány családra, a legtöbb leírásban elfogadott. Létezik azonban a Unicode kifejezés, ami egy másik, független szabványt jelöl, és gyakran, informálisan hivatkoznak rá, ha az UCS-re akarnak utalni. Fentiekre tekintettel, bármilyen, UCS-el kapcsolatos hivatalos referencia, utalás esetén pontosan és részletesen meg kell határozni az érintett részt és verziót a következők szerint: ISO/IEC 10646-{rész}:{év}; például: ISO/IEC 10646-1:1993.

Összefüggések az Unicode-dal

[szerkesztés]
  • ISO/IEC 10646-1:1993 ≈ Unicode 1.1
  • ISO/IEC 10646-1:2000 ≈ Unicode 3.0
  • ISO/IEC 10646-2:2001 ≈ Unicode 3.2
  • ISO/IEC 10646:2003 ≈ Unicode 4.0
  • ISO/IEC 10646:2003 és az 1. Kiegészítés ≈ Unicode 4.1
  • ISO/IEC 10646:2003 és az 1. Kiegészítés, a 2. Kiegészítés, és részben a 3. Kiegészítés ≈ Unicode 5.0

A részleteket lásd a §D.1 of The Unicode Standard pontban.

Kapcsolódó szócikkek

[szerkesztés]

Egyéb, angol nyelvű linkek

[szerkesztés]