Paras vastaus
Muut vastaukset eivät ole aivan oikeita.
On totta, että Unicode sisältää luettelon merkkejä melkein kaikista maailman käsikirjoituksista. Tämä on kuitenkin vain yksi osa Unicode-standardia: universaali koodattu merkistö . Unicode-standardi sisältää myös sääntöjä näiden Unicode-merkkien hahmontamiseen, järjestämiseen, normalisointiin ja kyllä koodaamiseen.
UTF-8 on yksi kolme standardimerkkikoodausta, joita käytetään edustamaan Unicodea tietokonetekstinä (muut ovat UTF-16 ja UTF-32). Historiallisesti tekstitiedostot koodattiin tyypillisesti tavusekvensseinä, joissa kukin tavu edusti yhtä merkkiä. Koska tavu voi kuitenkin ottaa vain yhden 256 arvosta, tämä ei ole mahdollista Unicodelle. Yksinkertaisin Unicode-koodaus on UTF-32 , joka käyttää 4 tavua (tai 32 bittiä) merkkiä kohden. Tämä on kuitenkin tehotonta tallennuksen, muistin ja käsittelyn käytössä. Vuoteen 1996 asti ajateltiin (tai toivottiin), että 2 tavua riittäisi edustamaan jokaista Unicode-merkkiä, mutta sitten ihmiset tajusivat, kuinka monta kiinalaista merkkiä on. Tämän seurauksena jotkut kielet, kuten JavaScript, käyttävät edelleen 2 tavua ( UCS-2 ) merkkien edustamiseen, mikä voi aiheuttaa ongelmia esimerkiksi \ unicode {x1F60E-merkkien käsittelyssä. }. Tämän korjaamiseksi UCS-2 korvattiin nimellä UTF-16 , jossa joitain merkkejä edusti kaksi kaksitavuiset koodiyksiköt yhden sijasta. Tämä tekee merkkijonon manipuloinnista monimutkaisemman (esimerkiksi merkkijonon pituuden laskeminen), mutta käyttää vähemmän tilaa kuin UTF-32.
UTF-8 on samanlainen kuin UTF-16, paitsi että sen koodiyksiköt ovat kaikki yhden tavun (8 bittiä) pituisia ja merkit edustavat yhdestä neljään koodiyksikköä. Pelkkätekstimerkit (eli ASCII-merkit) on esitetty yhdellä tavulla samalla tavalla kuin tavalliset ei-Unicode-merkkijonot. Tällä on suuri etu, että vanha ASCII-teksti on kelvollinen myös UTF-8: lle. Lisäksi ASCII: ta edustavia tavuja ei käytetä muiden merkkien esittämisessä, joten vanhoja ohjelmia, jotka etsivät niitä, ei tarvitse päivittää. Nämä edut yhdistettynä siihen, että UTF-8 on tavallisesti kaikkein tilaa tehokkain tapa Unicode-tekstin tallentaminen (erityisesti länsimaisille teksteille) tarkoittaa, että valtaosa verkkosivuista on nykyään koodattu UTF-8: een.
Vastaus
Tekstinkäsittelyohjelman on tuotettava jotain (ja tallenna jotain tiedostoon). Jos haluat ohjelmien toimivan yhdessä, tekstinkäsittelyohjelmasi puhuu esimerkiksi tulostimesi ja skanneriohjaimesi kanssa, sinun on kuvattava miten ne kommunikoivat. Ja haluat tehdä sen tehokkaasti. standardi mahdollistaa tämän keskinäisen viestinnän. Muuten Microsoft Wordin älykkäät lainausmerkit eivät toimi Canon-tulostimesi ja HP-skannerisi kanssa. Ei mitä haluat …
Muokkaa lisätty: Katso Cometin vastaus siitä, kuinka unicode liittyy semantiikkaan (ei syntaksiin / edustus). Tämä menee yhteentoimivuutta koskevaan näkökantaani. Haluat, että merkkijonosi on ”mielekäs”. Siksi jotkut asiat on esitetty unicode-muodossa ja toiset eivät. Latinalaisilla, kyrillisillä, kreikkalaisilla ja turkkilaisilla aakkosilla on kirjain, joka näyttää ”a”: lta (vaikka joissakin kirjasimissa ne ovat erotettavissa ja toisissa ei), mutta kyseisten kielten kirjoittajat pitävät niitä eri merkkejä (niillä on semanttinen ero). Siksi unicode pitää niitä erilaisina koodipisteinä. Ne edustavat erilaista semantiikkaa, lajittelevat eri tavoin jne. Sama pätee vasemmalle ja oikealle lainausmerkeille ja tietyille aksenttimerkkeille. Joillakin kielillä niillä on semanttinen ero. Saat tietynlaisen yhteentoimivuuden, kun edustat semantiikkaa oikein.
Saat toisenlaisen, kun edustat asioita kuvamaisesti oikein. Unicode pyrkii kuitenkin ensimmäiseen, ei toiseen.
Jos unicode edusti homoglyfejä yksittäisinä merkkeinä, heillä olisi sitten ongelma käytetyn fontin kanssa ja se tuhoaisi semanttisen oikeellisuuden. Latinalainen a-kirjain mustalla kirjasimella eroaa suuresti helvetisestä kirjaimesta roomalaisesta jne. Ja viisto ja kursivointi eivät aina ole samat, mutta toisinaan.
Kun luen kylttejä Bulgariassa, useimmat kertaa he käyttävät kyrillisiä merkkejä varten hyvin erilaista kirjasinta kuin latinankielinen transkriptio, joten on selvää, että ne ovat erilaisia merkkejä, jopa a-kirjaimen kaltaisissa asioissa. Mutta joskus he eivät, ja kun näen Bm: n rekisterikilvessä, minun on erotettava, kirjoittaako se Vt: n englanniksi vai onko se vain latinalainen Bm, ja on olemassa kokonaisia sanoja, jotka minun on luettava, jotta tiedän, mikä merkistö he ovat käyttävät.
Ja jopa semanttisen oikeellisuuden saaminen on vaikeaa. Saksan terävät kirjaimet ovat olemassa vain pienillä kirjaimilla, ja jos tulostat sanan kaikilla isoilla kirjaimilla, käytät kahta S-merkkiä, mutta pienissä kirjaimissa on kaksi sanaa ja pieniä s.
Kuten lähes kaikki standardit, myös unicode on kompromissi. Se yrittää saada vastaukset oikein, jotta sanat ovat oikein edustettuina ja ne voidaan välittää sen avulla. Se ei yritä olla ”graafisesti” oikea, joten unicode-sekvenssi kuvaa tulostettua esitystään yksiselitteisesti kaikkien määrättyjen yksityiskohtien kanssa. Tarvitset siihen enemmän kuin unicode.
Ja kun menet tätä polkua, sinulla on ongelma laitteissa, jotka eivät pysty antamaan (tai syöttämään) määrittelemääsi kuvausta. 200 dpi: n tulostin voi tehdä vain niin paljon, ja 1200 dpi: n tulostin voi ilmaista hienovaraisuuksia, jotka menetetään yksinkertaisesti 200 dpi: n tarkkuudella. Kysymykseksi tulee, välitätkö sinä? Joskus teet, mutta toisinaan et.
Unicode on hyvä monissa tapauksissa, joissa et halua yksinkertaisesti oikeaa semanttia. Kun haluat lähettää sanan yksiselitteisesti ja tietäen mitä unicode-koodipisteitä käytetään, tiedä miten sana kirjoitetaan luonnollisella kielellä. Homoglyfien olemassaolo sallii olla epäselvä, mutta ei vaadi sitä. Voit olla yksiselitteinen unicodessa. Et vain voi edustaa kaikkia yksityiskohtia siitä, miten se voidaan tulostaa .