Aby bol počítač schopný ukladať text a čísla, ktorým ľudia rozumejú, musí existovať kód, ktorý sa transformuje znaky na čísla. Norma Unicode definuje takýto kód pomocou kódovania znakov.
Kódovanie znakov príčiny je také dôležité, aby každé zariadenie mohlo zobraziť rovnaké informácie. Schéma vlastného kódovania znakov môže na jednom počítači fungovať skvele, ale môžu sa vyskytnúť problémy, keď pošlete ten istý text niekomu inému. Nebude vedieť, o čom hovoríte, pokiaľ to nerozumie aj schéme kódovania.
Kódovanie znakov
Všetky kódovanie znakov robí každému číslu, ktoré je možné použiť, pridelené číslo. Práve teraz by ste mohli vytvoriť kódovanie znakov.
Mohol by som napríklad povedať, že list sa stáva číslom 13, a = 14, 1 = 33, # = 123 atď.
Tu prichádzajú normy pre celý priemysel. Ak celé odvetvie počítačov používa rovnakú schému kódovania znakov, každý počítač môže zobraziť rovnaké znaky.
Čo je Unicode?
ASCII (americký štandardný kód pre výmenu informácií) sa stala prvou rozšírenou schémou kódovania. Je však obmedzená len na 128 definícií znakov. To je v poriadku pre najbežnejšie anglické znaky, čísla a interpunkciu, ale pre zvyšok sveta je to trochu limitujúce.
Zvyšok sveta samozrejme potrebuje rovnakú schému kódovania aj pre svoje postavy. Na chvíľu, v závislosti od toho, kde ste boli, sa však pri rovnakom kóde ASCII mohol zobraziť iný znak.
Nakoniec, ostatné časti sveta začali vytvárať svoje vlastné kódovacie schémy a veci začali byť trochu mätúce. Nielenže boli kódovacie schémy s rôznou dĺžkou, ale aj programy potrebné na zistenie, ktorú kódovaciu schému mali použiť.
Ukázalo sa, že je potrebná nová schéma kódovania znakov, ktorá bola v čase vytvorenia štandardu Unicode. Cieľom Unicode je zjednotiť všetky rôzne schémy kódovania tak, aby zámena medzi počítačmi mohla byť čo najviac obmedzená.
V týchto dňoch štandard Unicode definuje hodnoty pre viac ako 128 000 znakov a možno ich vidieť na internete Konzorcium Unicode. Má niekoľko foriem kódovania znakov:
- UTF-8: Na kódovanie anglických znakov sa používa iba jeden bajt (8 bitov). Na kódovanie ďalších znakov môže používať postupnosť bajtov. UTF-8 je široko používaný v e-mailových systémoch a na internete.
- UTF-16: Používa dva bajty (16 bitov) na kódovanie najbežnejšie používaných znakov. Ak je to potrebné, ďalšie znaky môžu byť reprezentované párom 16-bitových čísel.
- UTF-32: Na kódovanie znakov sa používajú štyri bajty (32 bitov). Ukázalo sa, že s rastúcim štandardom Unicode je 16-bitové číslo príliš malé na to, aby reprezentovalo všetky znaky. UTF-32 je schopný reprezentovať každý znak Unicode ako jedno číslo.
Poznámka: UTF znamená transformačnú jednotku Unicode.
Body kódu
Kódový bod je hodnota, ktorú má znak v norme Unicode. Hodnoty podľa Unicode sú zapísané ako hexadecimálne čísla a majú predponu U +.
Napríklad na zakódovanie znakov, na ktoré sme sa predtým zamerali:
- je U + 0041
- je U + 0061
- 1 je U + 0031
- # je U + 0023
Tieto kódové body sú rozdelené do 17 rôznych častí nazývaných roviny, ktoré sú označené číslami 0 až 16. Každá rovina má 65 536 kódových bodov. Prvá rovina, 0, obsahuje najbežnejšie používané znaky a je známa ako Základné viacjazyčné lietadlo (BMP).
Jednotky kódu
Schémy kódovania sú tvorené kódovými jednotkami, ktoré sa používajú na vytvorenie indexu, v ktorom je znak umiestnený v rovine.
Ako príklad uvážte UTF-16. Každé 16-bitové číslo je kódová jednotka. Kódové jednotky môžu byť transformované do kódových bodov. Napríklad symbol plochej noty ♭ má kódový bod U + 1D160 a žije v druhej rovine štandardu Unicode (Supplementary Ideographic Plane). Bolo by kódované pomocou kombinácie 16-bitových kódových jednotiek U + D834 a U + DD60.
V prípade BMP sú hodnoty kódových bodov a kódových jednotiek rovnaké. To umožňuje skratku pre UTF-16, ktorá šetrí veľa úložného priestoru. Na reprezentáciu týchto znakov stačí použiť jedno 16-bitové číslo.
Ako Java používa Unicode?
Jáva bol vytvorený v čase, keď štandard Unicode mal hodnoty definované pre oveľa menšiu množinu znakov. Vtedy sa cítilo, že 16 bitov by bolo viac ako dosť na zakódovanie všetkých znakov, ktoré by boli kedy potrebné. S ohľadom na to bola Java navrhnutá na použitie UTF-16. Dátový typ char bol pôvodne používaný ako reprezentácia 16-bitového kódového bodu Unicode.
Od verzie Java SE v5.0 predstavuje znak kódovú jednotku. To predstavuje malý rozdiel pre reprezentáciu znakov, ktoré sú v základnej viacjazyčnej rovine, pretože hodnota kódovej jednotky je rovnaká ako kódový bod. Znamená to však, že pre postavy na ostatných lietadlách sú potrebné dve znaky.
Dôležité je zapamätať si, že jediný typ dát char už nemôže predstavovať všetky znaky Unicode.