Selitys Unicode-merkkikoodauksesta

Jotta tietokone pystyy tallentamaan ihmisten ymmärtämää tekstiä ja numeroita, on oltava koodi, joka muuttaa merkkiä numeroiksi. Unicode-standardi määrittelee tällaisen koodin merkkikoodauksella.

Syymerkkikoodaus on niin tärkeä, että jokainen laite voi näyttää samat tiedot. Mukautettu merkkikoodausjärjestelmä voi toimia loistavasti yhdessä tietokoneessa, mutta ongelmia ilmenee, kun lähetät saman tekstin jollekin toiselle. Se ei tiedä mistä puhut, ellei ymmärrä myös koodausjärjestelmää.

Merkkikoodaus

Kaikki merkkikoodaukset merkitsevät numeroa jokaiselle käytettävälle merkille. Voit tehdä merkkikoodauksen heti.

Voisin esimerkiksi sanoa, että kirje muuttuu numeroksi 13, a = 14, 1 = 33, # = 123 ja niin edelleen.

Täällä otetaan käyttöön koko alan standardit. Jos koko tietokoneteollisuus käyttää samaa merkkijärjestelmää, jokainen tietokone voi näyttää samat merkit.

Mikä on Unicode?

ASCII (American Standard Code for Information Exchange) tuli ensimmäinen laajalle levinnyt koodausjärjestelmä. Se on kuitenkin rajoitettu vain 128 merkkimääritykseen. Tämä on hieno yleisimmille englannin merkeille, numeroille ja välimerkille, mutta on hiukan rajoittava muulle maailmalle.

instagram viewer

Luonnollisesti muu maailma haluaa saman koodausjärjestelmän myös heidän hahmoilleen. Kuitenkin jonkin aikaa, vaikka olisitkin paikallasi, samaan ASCII-koodiin saattaa olla näytetty eri merkki.

Loppujen lopuksi muut maailman osat alkoivat luoda omia koodausmallejaan, ja asiat alkoivat olla hieman hämmentäviä. Sen lisäksi, että koodausmallit olivat eripituisia, ohjelmien ei tarvinnut selvittää, mitä koodausmalleja niiden piti käyttää.

Kävi ilmi, että tarvitaan uusi merkistökoodausjärjestelmä, jolloin Unicode-standardi luotiin. Unicoden tavoitteena on yhtenäistää kaikki erilaiset koodausmenetelmät, jotta tietokoneiden välistä sekaannusta voidaan rajoittaa niin paljon kuin mahdollista.

Nykyään Unicode-standardi määrittelee arvot yli 128 000 merkille ja ne voidaan nähdä Unicode-konsortio. Sillä on useita merkistökoodausmuotoja:

  • UTF-8: Käytä vain yhtä tavua (8 bittiä) englantilaisten merkkien koodaamiseen. Se voi käyttää tavujonoa koodaamaan muita merkkejä. UTF-8: ta käytetään laajasti sähköpostijärjestelmissä ja Internetissä.
  • UTF-16: Käyttää kahta tavua (16 bittiä) koodaamaan yleisimmin käytetyt merkit. Lisämerkkejä voidaan tarvittaessa edustaa 16-bittisillä numeroilla.
  • UTF-32: Käyttää merkkejä koodaamaan neljä tavua (32 bittiä). Kävi ilmeiseksi, että Unicode-standardin kasvaessa 16-bittinen numero on liian pieni edustamaan kaikkia merkkejä. UTF-32 pystyy esittämään jokaisen Unicode-merkin yhtenä numerona.

Huomautus: UTF tarkoittaa Unicode Transformation Unit -yksikköä.

Koodipisteet

Koodipiste on arvo, jonka merkki annetaan Unicode-standardissa. Unicoden mukaiset arvot kirjoitetaan heksadesimaalilukuina ja etuliite on U +.

Esimerkiksi koodaamaan merkkejä, joita katselimme aikaisemmin:

  • on U + 0041
  • on U + 0061
  • 1 on U + 0031
  • # on U + 0023

Nämä koodipisteet on jaettu 17 eri osaan, joita kutsutaan tasoiksi, jotka on merkitty numeroilla 0-16. Jokaisessa koneessa on 65 536 koodipistettä. Ensimmäisessä tasossa, 0, on yleisimmin käytetyt merkit ja se tunnetaan nimellä Basic Multilingual Plane (BMP).

Koodiyksiköt

Koodausmenetelmät koostuvat koodiyksiköistä, joita käytetään hakemiston tarjoamiseen merkin asettamiseksi tasolle.

Tarkastellaan UTF-16: ta esimerkkinä. Jokainen 16-bittinen numero on koodiyksikkö. Koodiosat voidaan muuttaa koodipisteiksi. Esimerkiksi litteän noottisymbolin ♭ koodipiste on U + 1D160 ja se elää Unicode-standardin toisella tasolla (Supplementary Ideographic Plane). Se koodataan käyttämällä 16-bittisten koodiyksiköiden U + D834 ja U + DD60 yhdistelmää.

BMP: llä koodipisteiden ja koodiyksiköiden arvot ovat identtisiä. Tämä mahdollistaa UTF-16: n pikakuvakkeen, joka säästää paljon tallennustilaa. Sen on käytettävä vain yhtä 16-bittistä numeroa edustamaan näitä merkkejä.

Kuinka Java käyttää Unicodea?

Jaava luotiin aikaan, jolloin Unicode-standardissa oli määritetty arvot paljon pienemmälle merkistölle. Tuolloin tuntui, että 16-bittinen olisi enemmän kuin tarpeellinen koodaamaan kaikki merkit, joita ikinä tarvitaan. Tätä silmällä pitäen Java suunniteltiin käyttämään UTF-16. Char-datatyyppiä käytettiin alun perin 16-bittisen Unicode-koodipisteen edustamiseen.

Java SE v5.0: sta lähtien char tarkoittaa koodia. Monikielisessä perustasossa olevien merkkien esittämisessä ei ole suurta eroa, koska koodiyksikön arvo on sama kuin koodipiste. Se tarkoittaa kuitenkin, että muiden tasojen hahmoille tarvitaan kaksi merkkiä.

Tärkeä muistaa, että yksi char-tietotyyppi ei voi enää edustaa kaikkia Unicode-merkkejä.