Ero sivun ”Unicode” versioiden välillä

Siirry navigaatioon Siirry hakuun
234 merkkiä lisätty ,  17. syyskuuta 2006
p
ei muokkausyhteenvetoa
pEi muokkausyhteenvetoa
Rivi 2: Rivi 2:
[[wikipedia:fi:Unicode|Unicode Wikipediassa]]
[[wikipedia:fi:Unicode|Unicode Wikipediassa]]


'''Unicode''' on standardi, joka mm. määrittelee kaikille maailman kirjoitusmerkeille omat merkkikoodinsa. Tarkoituksena on korvata tähän saakka käytössä olleet hyvin erilaiset ja keskenään huonosti yhteensopivat merkistöt. Suomessa on Linux-koneissa käytetty enimmäkseen ISO-8859-15-merkistöä. Vanhojen merkistöjen ongelma on, että niiden merkkivalikoima on hyvin rajallinen, esimerkiksi 256 merkkiä. Se yleensä tarkoittaa, että samalla merkistöllä ei voida esittää useita kovin erilaisia kieliä. Esimerkiksi sama tekstitiedosto tai sähköpostiviesti ei voi sisältää tekstiä kuin niillä kielillä, joita kyseisellä merkistöllä voidaan esittää. Tämä ei kenties häiritse yksittäistä tietokoneenkäyttäjää, mutta sitä mukaa, kun kansainvälinen tietoliikenne on lisääntynyt, on myös lisääntynyt tarve luoda kaikille yhteinen standardi kirjoitusmerkkien esittämiseksi.
'''Unicode''' on standardi, joka mm. määrittelee useimmille maailman kirjoitusmerkeille omat merkkikoodinsa. Standardin tarkoituksena on korvata tähän saakka käytössä olleet hyvin erilaiset ja keskenään huonosti yhteensopivat merkistöt. Suomessa on Linux-koneissa käytetty enimmäkseen ISO-8859-15-merkistöä. Vanhojen merkistöjen ongelma on, että niiden merkkivalikoima on hyvin rajallinen; esimerkiksi 256 merkkiä. Se yleensä tarkoittaa, että samalla merkistöllä ei voida esittää useita kovin erilaisia kieliä. Esimerkiksi sama tekstitiedosto tai sähköpostiviesti ei voi sisältää tekstiä kuin niillä kielillä, joita kyseisellä merkistöllä voidaan esittää. Tämä ei kenties häiritse yksittäistä tietokoneenkäyttäjää, mutta sitä mukaa, kun kansainvälinen tietoliikenne on lisääntynyt, on myös lisääntynyt tarve luoda kaikille yhteinen standardi kirjoitusmerkkien esittämiseksi.


Unicode pyrkii ratkaisemaan vanhojen merkistöjen rajallisuuteen liittyvät ongelmat luomalla merkistön, joka sisältää kaikki nykyiset (ja jopa entiset) kirjoitusjärjestelmät. Unicode-standardi käsittää 1 114 112 merkkipaikkaa, ja ne yksilöidään U+xxxx-muotoisella tunnuksella, jossa ”xxxx” on merkin numerokoodi heksadesimaalimuodossa (16-järjestelmä). Mahdolliset koodit ovat U+0000..U+10FFFF. Käytännössä ihan jokainen merkkipaikka ei viittaa mihinkään kirjoitusmerkkiin, vaan mukana on jonkin verran myös erilaisia ohjauskoodeja tietokonetta varten sekä Unicode-standardiin liittyvää erikoistietoa. Joka tapauksessa merkkipaikkoja on niin paljon, että kaikki olemassa olevat ja jo historiaan jääneet kirjoitusmerkit mahtuvan mukaan. Tästä huolimatta merkkipaikkoja on runsaasti tyhjillään tulevaisuuden varalta ja kaikkia tuskin tarvitaan koskaan. Mukana on myös suuri joukko tarkoituksella määrittelemättömiä, yksityiseen käyttöön varattuja merkkipaikkoja.
Unicode pyrkii ratkaisemaan vanhojen merkistöjen rajallisuuteen liittyvät ongelmat luomalla merkistön, joka sisältää kaikki nykyiset (ja jopa entiset) kirjoitusjärjestelmät. Unicode-standardi käsittää 1 114 112 merkkipaikkaa, ja ne yksilöidään U+xxxx-muotoisella tunnuksella, jossa ”xxxx” on merkin numerokoodi heksadesimaalimuodossa (16-järjestelmä). Mahdolliset koodit ovat U+0000..U+10FFFF. Käytännössä ihan jokainen merkkipaikka ei viittaa mihinkään kirjoitusmerkkiin, vaan mukana on jonkin verran myös erilaisia ohjauskoodeja tietokonetta varten sekä Unicode-standardiin liittyvää erikoistietoa. Joka tapauksessa merkkipaikkoja on niin paljon, että kaikki olemassa olevat ja jo historiaan jääneet kirjoitusmerkit mahtuvan mukaan. Tästä huolimatta merkkipaikkoja on runsaasti tyhjillään tulevaisuuden varalta ja kaikkia tuskin tarvitaan koskaan. Mukana on myös suuri joukko tarkoituksella määrittelemättömiä, yksityiseen käyttöön varattuja merkkipaikkoja.


Unicode-merkkejä sisältävää tekstiä voidaan tallentaa tietokoneelle useilla eri tavoilla. Linuxissa ja yleensäkin tietoliikenteessä 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.
Unicode-merkkejä sisältävää tekstiä voidaan tallentaa tietokoneelle useilla eri tavoilla. Linuxissa ja yleensäkin tietoliikenteessä 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 ASCII on täysin UTF-8-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.


UTF-8:n lisäksi on olemassa muitakin koodaustapoja, esimerkiksi 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. sijaismerkkiparina (surrogate pair). UTF-32:ssa merkki esitetään aina yhtenä 32-bittisenä lukuna. Kuten todettu, Linuxissa käytetään pääasiassa UTF-8:aa. Ohjelmat voivat kuitenkin sisäisesti käyttää muitakin koodaustapoja, ja ohjelmien tekijät voivat vapaasti valita omaan ohjelmaansa sopivan tavan tallentaa tietoa.
UTF-8:n lisäksi on olemassa muitakin koodaustapoja, esimerkiksi 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. sijaismerkkiparina (surrogate pair). UTF-32:ssa merkki esitetään aina yhtenä 32-bittisenä lukuna. Kuten todettu, Linuxissa käytetään pääasiassa UTF-8:aa. Ohjelmat voivat kuitenkin sisäisesti käyttää muitakin koodaustapoja, ja ohjelmien tekijät voivat vapaasti valita omaan ohjelmaansa sopivan tavan tallentaa tietoa.
Rivi 60: Rivi 60:
== IRC ==
== IRC ==


Nykyisin suomalaisilla IRC-kanavilla käytetään enimmäkseen vanhoja 8-bittisiä merkistöjä, joilla esiintyy edellä kuvattuja ongelmia. Tästä syystä siirros UTF-8:n käyttöön on pikkuhiljaa tapahtumassa, mutta sitä luonnollisesti hidastaa se, että monet clientit eivät tue ko. merkistöä lainkaan ilman erillisiä scriptejä ja toisaalta se että vain muutama client saadaan tukemaan vanhaa 8-bittistä ja UTF-8:a samaan aikaan, siten että muiden kirjoittamat tekstit näkyisivät oikein riippumatta siitä kumpaa käytetään. Tilanne onneksi kuitenkin paranee kaiken aikaa ja on selvää että UTF-8:n käyttöön tullaan tulevaisuudessa siirtymään kokonaan. Siirros ei kuitenkaan missään tapauksessa tule tapahtumaan yhden yön aikana, joten olisi toivottavaa että mahdollisimman monista clienteistä löytyisi sekakäytön mahdollistava merkistön autodetectointi. Muutamilla kanavilla sai vuodenvaihteessa merkittävää kannatusta merkistönvaihtopäiväksi valittu päivämäärä 1.1.2006, ja siirtyminen tehtiin joillain [http://wiki.tukaani.org/utf-8_ja_irc-kanavat kanavilla] kokonaan. Nämä kanavat ovat kuitenkin ainakin toistaiseksi pieni vähemmistö.
Nykyisin suomalaisilla IRC-kanavilla käytetään enimmäkseen vanhoja 8-bittisiä merkistöjä, joilla esiintyy edellä kuvattuja ongelmia. Tästä syystä siirros UTF-8:n käyttöön on pikkuhiljaa tapahtumassa, mutta siirrosta luonnollisesti hidastaa se, että monet asiakasohjelmat eivät tue UTF-8-merkistöä lainkaan ilman erillisiä scriptejä ja toisaalta myös se, että vain muutama asiakasohjelma saadaan tukemaan vanhaa 8-bittistä ja UTF-8:a samaan aikaan, siten että muiden kirjoittamat tekstit näkyisivät oikein riippumatta siitä kumpaa käytetään. Tilanne onneksi kuitenkin paranee kaiken aikaa ja on selvää että UTF-8:n käyttöön tullaan tulevaisuudessa siirtymään kokonaan. Siirros ei kuitenkaan missään tapauksessa tule tapahtumaan yhden yön aikana, joten olisi toivottavaa että mahdollisimman monista asiakasohjelmista löytyisi sekakäytön mahdollistava merkistön automaattinen tunnistus. Muutamilla kanavilla sai vuodenvaihteessa merkittävää kannatusta merkistönvaihtopäiväksi valittu päivämäärä 1.1.2006, ja siirtyminen tehtiin joillain [http://wiki.tukaani.org/utf-8_ja_irc-kanavat kanavilla] kokonaan. Nämä kanavat ovat kuitenkin ainakin toistaiseksi pieni vähemmistö.


Alla on lueteltu tärkeimpien IRC-ohjelmien UTF-8-yhteensopivuus.
Alla on lueteltu tärkeimpien IRC-ohjelmien UTF-8-yhteensopivuus.
Rivi 70: Rivi 70:
=== Irssi ===
=== Irssi ===


Irssi 0.8.10 tukee merkistömuutoksia nykyisessä vakaassa versiossaan ja sitä edeltäneissä release candidateissa rc5:stä eteenpäin. Tämä mahdollistaa merkistön valinnan kanavakohtaisesti, kuten myös sen, että tästä riippumatta voidaan esimerkiksi logit kirjoittaa aina UTF-8-muodossa.  Tärkeimmät asetukset ovat /set term_charset <merkistö> (asettaa terminaalin käyttämän merkistön), /set recode_out_default_charset (asettaa oletusmerkistön lähtevälle tekstille) ja /recode add <merkistö> (asettaa aktiivisessa ikkunassa käytettävän merkistön). Merkistön automaattinen tunnistus toimii käytännössä luotettavasti.
Irssi 0.8.10 tukee merkistömuutoksia nykyisessä vakaassa versiossaan ja sitä edeltäneissä release candidateissa rc5:stä eteenpäin. Tämä mahdollistaa merkistön valinnan kanavakohtaisesti, kuten myös sen, että tästä riippumatta voidaan esimerkiksi lokit kirjoittaa aina UTF-8-muodossa.  Tärkeimmät asetukset ovat <tt>/set term_charset <nowiki><merkistö></nowiki></tt> (asettaa terminaalin käyttämän merkistön), <tt>/set recode_out_default_charset</tt> (asettaa oletusmerkistön lähtevälle tekstille) ja <tt>/recode add <nowiki><merkistö></nowiki></tt> (asettaa aktiivisessa ikkunassa käytettävän merkistön). Merkistön automaattinen tunnistus toimii käytännössä luotettavasti.


Irssi 0.8.10rc4 ja vanhemmat eivät sisällä sisäänrakennettua merkistömuunnostukea. /set term_type utf8 tai /set term_type 8bit asetettava terminaalin tyypin mukaisesti. Merkistömuunnostuen saa scripteillä recode.pl ja recode_ion.pl tai pluginilla charconv. Älä asenna useampaa samanaikaisesti, yksi riittää. rc5 ja rc6-versioissa recode-toiminto oli kehitysasteella, joten toimivuus ja ominaisuudet eivät ole täydellisiä. Mikäli mahdollista, nämä versiot kannattaa tietenkin päivittää uusimpaan vakaaseen versioon.
Irssi 0.8.10rc4 ja vanhemmat eivät sisällä sisäänrakennettua merkistömuunnostukea. <tt>/set term_type utf8</tt> tai <tt>/set term_type 8bit</tt> on asetettava terminaalin tyypin mukaisesti. Merkistömuunnostuen saa scripteillä recode.pl ja recode_ion.pl tai pluginilla charconv. Älä asenna useampaa samanaikaisesti, yksi riittää. rc5 ja rc6-versioissa recode-toiminto oli kehitysasteella, joten toimivuus ja ominaisuudet eivät ole täydellisiä. Mikäli mahdollista, nämä versiot kannattaa tietenkin päivittää uusimpaan vakaaseen versioon.


Erään ongelman muodostavat kanavat, joiden nimissä käytetään esimerkiksi Latin1-merkkejä, suomenkielisillä kanavilla yleensä ääkkösiä. UTF-8-terminaalilla niitä ei suoraan voi kirjoittaa ja UTF-8:lla kirjoitettu kanava #ääkkönen tietenkin on irc-serverin kannalta täysin eri kanava kuin vastaava nimi Latin1:llä kirjoitettuna. Ongelman voi kiertää esimerkiksi käyttämällä komennon ''/join #ääkkönen'' sijaan ''/eval''-komentoa, jolloin merkkien numerokoodeja voidaan kirjoittaa suoraan esimerkiksi oktaaleina: ''/eval /join \344\344kk\366nen''. Merkkien koodeja voi tarkistaa esimerkiksi [http://www.cs.tut.fi/~jkorpela/latin1.html tästä taulukosta].
Erään ongelman muodostavat kanavat, joiden nimissä käytetään esimerkiksi Latin1-merkkejä, suomenkielisillä kanavilla yleensä ääkkösiä. UTF-8-terminaalilla niitä ei suoraan voi kirjoittaa ja UTF-8:lla kirjoitettu kanava #ääkkönen tietenkin on irc-serverin kannalta täysin eri kanava kuin vastaava nimi Latin1:llä kirjoitettuna. Ongelman voi kiertää esimerkiksi käyttämällä komennon ''/join #ääkkönen'' sijaan ''/eval''-komentoa, jolloin merkkien numerokoodeja voidaan kirjoittaa suoraan esimerkiksi oktaaleina: ''/eval /join \344\344kk\366nen''. Merkkien koodeja voi tarkistaa esimerkiksi [http://www.cs.tut.fi/~jkorpela/latin1.html tästä taulukosta].
Rivi 78: Rivi 78:
=== KVIrc ===
=== KVIrc ===


IRC-client [[QT]]/[[KDE|KDE:lle]]. Tukee suoraan autodetectointia. Yläkulmassa on kiinalainen kirjoitusmerkki, josta voi valita merkistön kanavakohtaisesti (myös verkkokohtainen ja ohjelmanlaajuinen merkistön valinta on mahdollista). UTF-8:n recode vanhaan muotoon onnistuu valinnalla Smart-alavalikon valinnalla <tt>UTF-8/ISO-8859-15 ( UTF-8? -> Western, Latin 1 + Euro)</tt>.
IRC-client [[QT]]/[[KDE|KDE:lle]]. Tukee suoraan merkistön automaattista tunnistusta. Yläkulmassa on kiinalainen kirjoitusmerkki, josta voi valita merkistön kanavakohtaisesti (myös verkkokohtainen ja ohjelmanlaajuinen merkistön valinta on mahdollista). UTF-8:n recode vanhaan muotoon onnistuu valinnalla Smart-alavalikon valinnalla <tt>UTF-8/ISO-8859-15 ( UTF-8? -> Western, Latin 1 + Euro)</tt>.


KVirc on saatavilla myös Windowssille, joten sitä voi tarjota merkistöongelmista kärsiville mIRC:n käyttäjille.
KVirc on saatavilla myös Windowssille, joten sitä voi tarjota merkistöongelmista kärsiville mIRC:n käyttäjille.
Rivi 84: Rivi 84:
=== mIRC ===
=== mIRC ===


mIRC ei ole Linux-ohjelma, mutta monet käyttävät Windowsissa vanhoja versioita siitä ja valittavat UTF:stä juuri siksi että skandit eivät näy heillä. Kuitenkin  mIRC:in uusi 17.2.2006 julkaistu versio 6.17 osaa näyttää oikein myös UTF-8 koodatut skandit ilman säätämistä!
mIRC ei ole Linux-ohjelma, mutta monet käyttävät Windowsissa vanhoja versioita siitä ja valittavat UTF:stä juuri siksi että skandit eivät näy heillä. Kuitenkin  mIRCin uusi 17.2.2006 julkaistu versio 6.17 osaa näyttää oikein myös UTF-8-koodatut skandit oletusasetuksilla.


=== Wireless IRC ===
=== Wireless IRC ===


Ei tue autodetectointia, mutta asetuksista voi määritellä merkistöksi UTF-8:n.
Ei tue merkistön automaattista tunnistusta, mutta asetuksista voi määritellä merkistöksi UTF-8:n.


=== X-Chat ===
=== X-Chat ===


Verkkokohtainen merkistön valinta asetuksista. Autodetectointi vain silloin kun käytössä on UTF-8.
Verkkokohtainen merkistön voi valita asetuksista. Merkistön automaattinen tunnistus on käytössä vain kun UTF-8-merkistö on valittu.


X-Chatin sivustolta löytyy myös python-scripti (lamechan.py), jolla voi kanavakohtaisesti valita käytetäänkö UTF-8:aa vai jotain toista merkistöä. Tätä scriptiä ei ole saatu toimimaan X-Chatin Windows-versioilla.
X-Chatin sivustolta löytyy myös python-scripti (lamechan.py), jolla voi kanavakohtaisesti valita käytetäänkö UTF-8:aa vai jotain toista merkistöä. Tätä scriptiä ei ole saatu toimimaan X-Chatin Windows-versioilla.
Rivi 98: Rivi 98:
=== jmIrc ===
=== jmIrc ===


Asetuksista voi määritellä merkistöksi UTF-8:n, tukee myös autodetectointia.
Asetuksista voi määritellä merkistöksi UTF-8:n, tukee myös merkistön automaattista tunnistusta.


== Linkkejä ==
== Linkkejä ==


* Virallinen merkistönvaihtopäivä ja tarkat ohjeet clientien säätämiseen [http://wiki.tukaani.org/irc_ja_utf-8 Tukaanin Wikissä]
* Virallinen merkistönvaihtopäivä ja tarkat ohjeet asiakasohjelmien säätämiseen [http://wiki.tukaani.org/irc_ja_utf-8 Tukaanin Wikissä]
* [http://wiki.tukaani.org/utf-8_ja_irc-kanavat IRC-kanavien UTF-8-säännöt]
* [http://wiki.tukaani.org/utf-8_ja_irc-kanavat IRC-kanavien UTF-8-säännöt]


151

muokkausta

Navigointivalikko