Ero sivun ”Unicode” versioiden välillä

Siirry navigaatioon Siirry hakuun
807 merkkiä lisätty ,  26. huhtikuuta 2022
→‎Kieliä: saksan iso ß → ẞ
p (→‎IRC: kh)
(→‎Kieliä: saksan iso ß → ẞ)
 
(12 välissä olevaa versiota 9 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{perustietoa}}
{{perustietoa}}
[[wikipedia:fi:Unicode|Unicode Wikipediassa]]
== Esittely ==


'''Unicode''' on standardi, joka muun muassa 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''' on standardi, joka muun muassa 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.
Rivi 12: Rivi 9:
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.


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 yksinään kykene näyttämään kaikkia merkkejä.
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 [[lokaali]]en 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 yksinään kykene näyttämään kaikkia merkkejä.


== [[Tiedostojärjestelmä]]t ==
== [[Tiedostojärjestelmä]]t ==
Rivi 18: Rivi 15:
=== Ext3 ja muut Unixien tiedostojärjestelmät ===
=== Ext3 ja muut Unixien tiedostojärjestelmät ===


[[Ext3]] on Linuxissa yleisesti käytetty tiedostojärjestelmä. Se tukee täydellisesti Unicodea ja UTF-8:aa mutta tekee sen tavallaan tietämättään. Samoin on asia muissakin tiedostojärjestelmissä, joita käytetään Linuxissa ja Unix-tyyppisissä käyttöjärjestelmissä. Tiedostojärjestelmät eivät välitä, mitä merkkejä tiedostojen nimissä on, eivätkä ne tallenna mitään tietoa käytetystä merkistöstä tai sen koodaustavasta. Poikkeuksena on nollatavu (ASCII NUL, U+0000) ja [[vinoviiva]] (”/”, U+002F), jotka ovat kiellettyjä merkkejä tiedostonnimissä.
[[Ext3]] on Linuxissa yleisesti käytetty tiedostojärjestelmä. Se tukee täydellisesti Unicodea ja UTF-8:aa mutta tekee sen tavallaan tietämättään. Samoin on asia muissakin tiedostojärjestelmissä, joita käytetään Linuxissa ja Unix-tyyppisissä käyttöjärjestelmissä. Tiedostojärjestelmät eivät välitä, mitä merkkejä tiedostojen nimissä on, eivätkä ne tallenna mitään tietoa käytetystä merkistöstä tai sen koodaustavasta. Kiellettyjä merkkejä Linuxin tiedostojärjestelmissä ovat ainoastaan nollatavu (ASCII NUL, U+0000) ja [[vinoviiva]] (”/”, U+002F).


Tiedostojärjestelmää lukiessaan Linux tulkitsee tiedostojen nimet käytössä olevan lokaalin perusteella. Jos käytössä on UTF-8-lokaali (esimerkiksi fi_FI.UTF-8), niin järjestelmä tulkitsee, että tiedostojen nimet ovat UTF-8-koodattuja. Tästä seuraa sellainen ikävä asia, että jos tiedostojen nimet on kirjoitettu käyttäen eri lokaalia kuin mikä parhaillaan on käytössä, niin todennäköisesti nimet eivät näy oikein. Tiedostojen nimien muuttaminen merkistökoodauksesta toiseen onnistuu [[convmv]]-ohjelmalla.
Tiedostojärjestelmää lukiessaan Linux tulkitsee tiedostojen nimet käytössä olevan lokaalin perusteella. Jos käytössä on UTF-8-lokaali (esimerkiksi fi_FI.UTF-8), niin järjestelmä tulkitsee, että tiedostojen nimet ovat UTF-8-koodattuja. Tästä seuraa sellainen ikävä asia, että jos tiedostojen nimet on kirjoitettu käyttäen eri lokaalia kuin mikä parhaillaan on käytössä, todennäköisesti nimet eivät näy oikein. Tiedostojen nimien muuttaminen merkistökoodauksesta toiseen onnistuu [[convmv]]-ohjelmalla.


=== NTFS ===
=== NTFS ===
Rivi 36: Rivi 33:
=== FAT ===
=== FAT ===


Myös [[FAT]] on Microsoftin kehittämä tiedostojärjestelmä. Sitä käytetään paitsi Windowsissa mutta hyvin yleisesti myös USB-muistien, digikameroiden ja kannettavien MP3-soittimien tiedostojärjestelmänä. Pitkissä tiedostojen nimissä myös FAT tukee Unicodea, ja se periaatteessa tallentaa nimet UTF-16-muodossa. Ikänsä vuoksi FAT tukee kuitenkin vain Unicoden ensimmäisiä versioita ja merkkejä vain nk. Basic Multilingual Planesta (U+0000..U+FFFF). FATin tukema merkkivalikoima käsittää kuitenkin suurimman osan maailman kirjoitusmerkeistä, joten sen Unicode-tuki on useimpien kielten näkökulmasta varsin hyvä.
Myös [[FAT]] on Microsoftin kehittämä tiedostojärjestelmä. Sitä käytetään paitsi Windowsissa hyvin yleisesti myös USB-muistien, digikameroiden ja kannettavien MP3-soittimien tiedostojärjestelmänä. Pitkissä tiedostojen nimissä myös FAT tukee Unicodea, mutta vanhemmassa muodossa UCS-2, joka eroaa UTF-16:sta tukemalla vain Unicoden ensimmäisiä versioita ja merkkejä nk. Basic Multilingual Planesta (U+0000..U+FFFF). FATin tukema merkkivalikoima käsittää kuitenkin useimpien kielten tavallisesti käytetyt kirjoitusmerkit, joten sen Unicode-tuki on nykykielten näkökulmasta hyvä.


Samoin kuin NTFS:ssä, myös FAT-tiedostojärjestelmää liitettäessä täytyy Linuxille kertoa, mihin muotoon tiedostojen nimet täytyy muuttaa. Käytettäessä Linuxissa UTF-8-lokaalia, täytyy FAT-tiedostojärjestelmä liittää Linuxiin antamalla [[mount]]-komennolle optioksi ”utf8”. Siten [[fstab|/etc/fstab]]-tiedostoon laitettaisiin esimerkiksi rivi:
Samoin kuin NTFS:ssä, myös FAT-tiedostojärjestelmää liitettäessä täytyy Linuxille kertoa, mihin muotoon tiedostojen nimet täytyy muuttaa. Käytettäessä Linuxissa UTF-8-lokaalia, täytyy FAT-tiedostojärjestelmä liittää Linuxiin antamalla [[mount]]-komennolle optioksi ”utf8”. Siten [[fstab|/etc/fstab]]-tiedostoon laitettaisiin esimerkiksi rivi:
Rivi 44: Rivi 41:


Jos omassa Linux-järjestelmässä on aiemmin ollut käytössä ISO-8859-15-merkistö (esimerkiksi lokaali fi_FI@euro) 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 sitten teksti uudella koodauksella. Nopeampaa saattaa kuitenkin olla komentotulkin ja [[recode]]-ohjelman käyttö:
Jos omassa Linux-järjestelmässä on aiemmin ollut käytössä ISO-8859-15-merkistö (esimerkiksi lokaali fi_FI@euro) 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 sitten teksti uudella koodauksella. Nopeampaa saattaa kuitenkin olla komentotulkin ja [[recode]]-ohjelman käyttö:
  recode ISO-8859-15..UTF-8 tiedosto.txt
  recode ISO-8859-15..UTF-8 tiedosto.txt
Tiedostojen nimissä käytetyn merkistön muuntaminen onnistuu [[convmv]]-nimisellä ohjelmalla.
 
for file in *.php; do recode ISO-8859-15..UTF-8 "$file"; done
 
Toinen tiedostokoodauksen muuttamiseen tarkoitettu ohjelma on [[iconv]]. Tiedostojen nimissä käytetyn merkistön muuntaminen onnistuu [[convmv]]-nimisellä ohjelmalla.


=== Emacs ===
=== Emacs ===


GNU [[Emacs]] toimii versiosta 22 alkaen yleensä suoraan UTF-8:n kanssa. Vanhemmissa versioissa on <tt>.emacs</tt>-asetustiedostoon lisättävä seuraavat rivit:
GNU [[Emacs]] toimii versiosta 22 alkaen automaattisesti UTF-8:n kanssa. Emacs 21:ssä on <tt>.emacs</tt>-asetustiedostoon lisättävä seuraavat rivit (tuki 21:ssä ei ole ongelmaton, katso esim. Debianin bugitietokanta):
  (prefer-coding-system 'utf-8)
 
(set-keyboard-coding-system 'utf-8)
  (when (= emacs-major-version 21)
(set-terminal-coding-system 'utf-8)
  (prefer-coding-system 'utf-8)
  (set-keyboard-coding-system 'utf-8)
  (set-terminal-coding-system 'utf-8))


=== Vim ===
=== Vim ===
Rivi 104: Rivi 107:


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.
=== HexChat ===
X-Chatin kaltainen, mutta UTF-8 merkistö on oletuksena käytössä.


=== jmIrc ===
=== jmIrc ===


Asetuksista voi määritellä merkistöksi UTF-8:n, tukee myös merkistön automaattista tunnistusta.
Asetuksista voi määritellä merkistöksi UTF-8:n, tukee myös merkistön automaattista tunnistusta.
=== WeeChat ===
WeeChat käyttää UTF-8-merkistökoodausta oletuksena lähetetyissä viesteissä ja tulkitsee sisäänpäin tulevat viestit aina niin ja elleivät ne ole UTF-8:aa, se käyttää asetusta charset.default.decode, jonka oletusarvo on iso-8859-1. Käytettävät merkistöt voi asettaa seuraavilla komennoilla:
<pre>
/set charset.default.decode <merkistö>
/set charset.default.encode UTF-8
</pre>
Jos WeeChatin halutaan tulkitsevan vain UTF-8:aa, tämä tapahtuu komennolla
/set charset.default.decode ""


== Tietoturva ==
== Tietoturva ==
Rivi 146: Rivi 163:
**‘ (U+2018 LEFT SINGLE QUOTATION MARK)
**‘ (U+2018 LEFT SINGLE QUOTATION MARK)
*Espanja: Ñ ñ ¿ ¡
*Espanja: Ñ ñ ¿ ¡
*Esperanto: Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŭ ŭ
*Norja ja tanska: Æ æ Ø ø
*Norja ja tanska: Æ æ Ø ø
*Ranska: È É Ê Ë è é ê ë Ò Ó Ô ò ó ô Ç ç Ï ï
*Ranska: È É Ê Ë è é ê ë Ò Ó Ô ò ó ô Ç ç Ï ï
*Saksa: ß Ü ü
*Saksa: ß Ü ü
*Viro: Õ õ
*Viro: Õ õ


53

muokkausta

Navigointivalikko