Ero sivun ”UTF-8” versioiden välillä

Siirry navigaatioon Siirry hakuun
787 merkkiä lisätty ,  31. heinäkuuta 2006
ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Rivi 3: Rivi 3:




'''Unicode''' on standardi, joka pyrkii määrittelemään kaikille maailman merkeille omat merkkikoodinsa (UCS). Tarkoituksena on korvata tähän saakka käytössä olleet keskenään kilpailevat merkistöt ja koodisivut, joista kukin on voinut esittää vain osan tarvittavista merkeistä. Esimerkiksi suosittu IRC-client mIRC käyttää suomalaisilla koneilla merkistöä Microsoft CP1252, kun suurin osa Linux-koneista puolestaan käyttää merkistöä ISO-8859-1 (Latin-1) ja Finnish-HOWTO:n mukaan säädetyt Linux-koneet puolestaan merkistöä ISO-8859-15 (Latin-9). Merkistöissä on yhteneväisyyksiä ja esim. tavalliset ääkköset ovat kaikissa samoilla merkkikoodeilla, mutta jo euromerkki näkyy eri merkistöillä eri tavoilla. Unicode ratkaisee ongelman ottamalla käyttöön merkkiavaruuden 0–$10FFFF, joka käsittää siis peräti 1 114 111 merkkiä.
'''Unicode''' on standardi, joka määrittelee kaikille maailman merkeille omat merkkikoodinsa (UCS). Tarkoituksena on korvata tähän saakka käytössä olleet keskenään hyvin erilaiset, lähes kielikohtaiset merkistöt. Suomessa on Linux-koneissa käytetty enimmäkseen ISO-8859-15-merkistöä. Vanhojen merkistöjen ongelma on, että samalla merkistöllä ei voida esittää useita erilaisia kieliä. Näin ollen esimerkiksi sama tekstitiedosto tai sähköpostiviesti ei voi sisältää tekstiä kuin niillä kielillä, joita kyseisellä merkistöllä voidaan esittää. Unicode pyrkii ratkaisemaan tällaiset ongelmat luomalla kaikille yhteisen merkistön, joka sisältää kaikki nykyiset (ja jopa entiset) kirjoitusjärjestelmät. Unicode-standardi käsittää 1 114 111 merkkiä, ja ne yksilöidään tunnuksella, joka on muotoa U+xxxx. Tunnuksessa ”xxxx” on merkin numerokoodi heksadesimaalimuodossa. Mahdolliset koodit ovat U+0000 – U+10FFFF.


Unicode-merkkejä voidaan koodata useilla eri tavoilla. UTF-8 on Unix-tyyppisissä käyttöjärjestelmissä (esim. Linux) tärkein Unicoden koodaustapa, ja se on jo muutamissa distroissa vakiona käytössä. UTF-8-koodauksessa yksi merkki vie tallennustilaa 1–4 oktettia (tavua), siten että ASCII-merkit (aakkoset, numerot ym., mutta ei esim. ääkköset) esitetään sellaisinaan yhtenä tavuna. Näin saavutetaan ASCII-yhteensopivuus, mikä on tärkeää, koska Unix- ja Linux-koneissa käytetään paljon ASCII-muodossa olevia asetustiedostoja ja käynnistysskriptejä. (UTF-8:lla voisi periaatteessa koodata merkkiavaruuden 0–$7FFFFFFF käyttäen 1–6 tavua. Käytännössä Unicoden koko merkkiavaruus voidaan esittää 1–4 tavulla.)
Unicode-merkkejä sisältävää tekstiä voidaan tallentaa tietokoneelle useilla eri tavoilla. Linuxissa käytetty Unicoden koodaustapa on nimeltään UTF-8. Tässä koodauksessa yksi Unicode-merkki vie tallennustilaa 1–4 oktettia eli 8 bitin tavua. ASCII-merkistöön kuuluvat merkit (U+0000 – U+007F) esitetään UTF-8:ssa sellaisenaan, yhtenä tavuna, joten UTF-8 on täysin ASCII-yhteensopiva. Se onkin Linuxissa tärkeää, koska siinä käytetään paljon ASCII-muodossa olevia asetustiedostoja ja käynnistysskriptejä. Muiden kuin ASCII-merkkien esittämiseksi tarvitaan avuksi lisätavuja, ja esimerkiksi suomen kieleen kuuluvien ä- ja ö-kirjainten esittämiseen tarvitaan kaksi tavua.


Muita koodaustapoja ovat UCS-2, UCS-4, UTF-7, UTF-16, UTF-32. Usein kuulee kysyttävän, että eikö kannattaisi samantien siirtyä käyttämään UTF-32:ta, jotta merkit eivät loppuisi kesken. Näin ei käy, vaan kaikilla koodaustavoilla, lukuun ottamatta UCS-2:ta, voidaan esittää kaikki Unicoden noin 1,1 miljoonaa merkkiä. Vanha UCS-2 kykenee vain ensimmäisten 65 535 koodin esittämiseen; sen on korvannut uudempi UTF-16.
UTF-8:n lisäksi on olemassa muitakin koodaustapoja, esimerkiksi UCS-2, UCS-4, UTF-7, UTF-16 ja UTF-32. Yleisimmin käytettyjä lienevät UTF-8, UTF-16 ja UTF-32. UTF-16:ssa merkit esitetään joko yhtenä 16-bittisenä lukuna tai mikäli merkin koodi on sitä suurempi, niin kahden 16-bittisen luvun muodostamana nk. surrogaattiparina. UTF-32:ssa merkki esitetään aina yhtenä 32-bittisenä lukuna. Kuten todettu, Linuxissa käytetään yleensä UTF-8:aa. Ohjelmat voivat kuitenkin sisäisesti käyttää jotain muutakin. Ohjelmien tekijät voivat vapaasti valita omaan ohjelmaansa sopivan tavan tallentaa tietoa.


UTF-8 on nykyisin monien jakeluiden, esimerkiksi Ubuntun, oletusmerkistö käyttöjärjestelmän tiedostonimien koodaukseen ja tekstitiedostojen muodoksi.
Nykyisin monet Linux-jakelut käyttävät UTF-8:aa oletuksena. Tämän voi havaita siitä, että järjestelmän käyttämien lokaalien nimessä on ”UTF-8”. Esimerkiksi Suomessa käytetään lokaalia nimeltä ”fi_FI.UTF-8”. Tällaista lokaalia käytettäessä järjestelmä tukee Unicodea ja mm. tiedostojen nimiin ja tekstitiedostoihin on periaatteessa mahdollista kirjoittaa kaikkia Unicode-merkkejä. Käytännössä mikään fontti ei ihan kaikkia merkkejä kykene näyttämään.


== Tekstitiedostot ==
== Tekstitiedostot ==


Eräs tapa tekstitiedoston muuttamiseen UTF-8-koodaukseen on tietenkin avata se johonkin tekstieditoriin ja tallentaa tämän jälkeen eri koodauksella. Nopeampaa saattaa kuitenkin olla komentorivin ja ''recode'' ohjelman käyttö:
Jos oma Linux-järjestelmä on aiemmin käyttänyt ISO-8859-15-merkistö (nk. Latin9), ja sittemmin on siirrytty UTF-8:aan, täytyy omat tekstitiedostot muuttaa UTF-8-koodatuiksi, jotta niiden sisältö näkyisi oikein. Yksi tapa tekstitiedoston muuttamiseen UTF-8-koodaukseen on avata se johonkin tekstieditoriin ja tallentaa tämän jälkeen eri koodauksella. Nopeampaa saattaa kuitenkin olla komentotulkin ja ''recode''-ohjelman käyttö:
  recode latin9..UTF-8 tiedosto.txt
  recode latin9..UTF-8 tiedosto.txt
Tiedostonimien muuntaminen onnistuu [[convmv|convmv:llä]].
Tiedostonnimien muuntaminen onnistuu [[convmv]]-nimisellä ohjelmalla.


== Ohjelmat ==
== Ohjelmat ==
Rekisteröitymätön käyttäjä

Navigointivalikko