Ahhoz, hogy egy számítógép képes legyen az emberek által megérthető szöveget és számokat tárolni, szükséges egy kód, amely átalakul karakterek számokra. A Unicode szabvány karakterkódolással határozza meg az ilyen kódot.
A karakterkódolás oka annyira fontos, hogy minden eszköz ugyanazt az információt tudja megjeleníteni. Előfordulhat, hogy az egyéni karakterkódolási rendszerek kiválóan működnek egy számítógépen, de problémák merülnek fel, ha ugyanazt a szöveget másnak küldi el. Nem fogja tudni, miről beszél, csak akkor, ha megérti a kódolási sémát.
Karakterkódolás
Minden karakterkódoláshoz hozzárendel egy számot minden használható karakterhez. Most karaktert kódolhat.
Például azt mondanám, hogy a levél A lesz a 13-as szám, a = 14, 1 = 33, # = 123 és így tovább.
Itt jönnek be az iparági szabványok. Ha az egész számítógépes ipar ugyanazt a karakterkódolási sémát használja, akkor minden számítógép ugyanazokat a karaktereket jelenítheti meg.
Mi az a Unicode?
ASCII (Amerikai szabványos információcsere-kód)
lett az első elterjedt kódolási séma. Ez azonban csak 128 karakterdefinícióra korlátozódik. Ez a leggyakoribb angol karakterek, számok és írásjelek esetében jó, de a világ többi része számára is kissé korlátozott.Természetesen a világ többi része ugyanazt a kódolási sémát akarja a karaktereikhez is. Azonban egy darabig, bár attól függően, hogy hol tartózkodott, ugyanahhoz az ASCII-kódhoz eltérő karakter jelenhet meg.
Végül a világ többi része elkezdte létrehozni saját kódolási sémáit, és a dolgok kissé zavarosak lettek. Nem csak a hosszúságú kódolási sémák, hanem a programoknak kellett kitalálniuk, melyik kódolási sémát kell használniuk.
Nyilvánvalóvá vált, hogy új karakterkódolási sémára van szükség, azaz a Unicode szabvány létrehozásakor. Az Unicode célja az összes különféle kódolási séma egyesítése annak érdekében, hogy a számítógépek közötti zavart a lehető legnagyobb mértékben lehessen korlátozni.
Manapság az Unicode szabvány több mint 128 000 karakter értékét határozza meg, és a képernyőn látható Unicode Consortium. Több karakterkódoló formája van:
- UTF-8: Csak egy bájtot (8 bit) használ az angol karakterek kódolásához. Használhat bájt sorozatot más karakterek kódolásához. Az UTF-8 széles körben használják az e-mail rendszerekben és az interneten.
- UTF-16: Két bájtot (16 bit) használ a leggyakrabban használt karakterek kódolásához. Szükség esetén a további karaktereket 16 bites számok ábrázolhatják.
- UTF-32: Négy bájtot (32 bit) használ a karakterek kódolásához. Nyilvánvalóvá vált, hogy a Unicode szabvány növekedésével a 16 bites szám túl kicsi ahhoz, hogy az összes karaktert ábrázolja. Az UTF-32 képes minden Unicode karaktert egy számként ábrázolni.
Jegyzet: UTF: Unicode Transformation Unit.
Kódpontok
A kódpont az az érték, amelyet egy karakter megad a Unicode szabványban. Az Unicode szerinti értékek hexadecimális számként vannak írva, és előtaguk U +.
Például a korábban megtekintett karakterek kódolásához:
- A U + 0041
- egy U + 0061
- 1 U + 0031
- # U + 0023
Ezeket a kódpontokat 17 különböző szakaszra osztják, síknak nevezik, amelyeket 0–16 számok jelölnek. Minden sík 65 536 kódpontot tartalmaz. Az első sík, a 0, a leggyakrabban használt karaktereket tartalmazza, és alapvető többnyelvű síknak (BMP) hívják.
Kód egységek
A kódolási sémák kód egységekből állnak, amelyeket arra használnak, hogy indexet biztosítsanak arra a helyre, ahol a karakter síkon helyezkedik el.
Vegyük példa az UTF-16-at. Mindegyik 16 bites szám kód egység. A kód egységek kódpontokká alakíthatók. Például az flat lapos jegyzet szimbóluma U + 1D160 kódponttal rendelkezik, és az Unicode szabvány második síkján (kiegészítő ideográfiai sík) él. A kódolás a 16 bites U + D834 és U + DD60 kombinációval történik.
A BMP esetében a kódpontok és a kód egységek értékei azonosak. Ez lehetővé teszi az UTF-16 parancsikonját, amely sok tárhelyet takarít meg. Csak egy 16 bites számot kell használnia, hogy ábrázolja ezeket a karaktereket.
Hogyan használja a Java az Unicode-t?
Jáva akkor jött létre, amikor a Unicode szabvány értékei sokkal kisebb karakterkészletre vonatkoztak. Akkoriban úgy érezték, hogy a 16 bites elegendő lesz minden olyan karakter kódolásához, amelyre valaha szükség lenne. Ezt szem előtt tartva, a Java-t az UTF-16 használatára tervezték. A char adat típusát eredetileg egy 16 bites Unicode kódpont ábrázolására használták.
A Java SE v5.0 óta a char kód egységet képvisel. Alig különbözik az alapvető többnyelvű síkon szereplő karakterek ábrázolásától, mivel a kód egység értéke megegyezik a kódponttal. Ez azonban azt jelenti, hogy a többi síkban szereplő karakterekhez két karakterre van szükség.
Fontos dolog, amelyet meg kell emlékezni, hogy egyetlen char adattípus már nem képviseli az összes Unicode karaktert.