Muokattu 17.6.2024
Tässä toisessa osassa kerron, miten tietokoneet käsittelevät kirjaimia.
Tämän artikkelin teksti asennusohjeineen on ladattavissa Dropboxistani.
Merkistökoodaus
Tietotekniikassa tarkkeelliset kirjaimet voidaan toteuttaa kirjoituskoneiden tapaan joko koostemerkkeinä eli valmiina kantamerkin ja tarkkeen yhdistelminä tai yhdistelemällä kaksi (tai useampi) erillistä merkkiä siten, että ne asemoituvat samalle kohdalle.
Erona kirjoituskoneisiin on, että tietokoneissa merkeistä täytyy tallentaa tietoa, vähintään kutakin merkkiä vastaava koodi (esim. tekstitiedosto koostuu sarjasta näitä koodeja). Näiden numerokoodien tallentaminen ja käsitteleminen vaatii muistia. Muisti oli tietotekniikan alkuaikoina kallista, joten aluksi käytettiin vain seitsemää bittiä (eli nollaa ja ykköstä) jokaista merkkiä vastaavan numerokoodin tallentamiseen. Tällöin voitiin esittää 2⁷ = 128 erilaista merkkiä. Kun tuosta luvusta vähennetään englannin suur- ja pienaakkoset, numerot, välimerkit ja joukko teknisiä ohjauskoodeja (esim. rivinvaihto), muiden kielien tarvitsemille merkeille ei oikeastaan jäänyt tilaa.
Muistin halventuessa käytettävien bittien määrää saatettiin kyllä kasvattaa, mutta valitettavasti ehti syntyä useita rinnakkaisia merkistöjä, joissa oli tarjolla eri kielille sopiva valikoima tarkkeellisia kirjaimia. Tästä seurasi, että samaa numerokoodia vastasi eri kirjain sen mukaan, mikä merkistö oli käytössä.
Ajatus yleismaailmallisesta ja mahdollisimman kattavasta merkistöstä syntyi 1980-luvulla. Kesti kuitenkin seuraavan vuosikymmenen alkuun, ennen kuin kansainväliset standardointijärjestöt ISO ja IEC saivat valmiiksi standardin nimeltä ISO/IEC 10646 Universal Character Set UCS. Ohjelmistoteollisuuden piirissä samaan pyrkinyt projekti sai nimen Unicode. Käytännössä nämä tarkoittavat samaa.
Unicode-merkistöön voidaan koodata standardin viimeisimmän version mukaan 107 361 kirjoitusmerkkiä, joten siihen voidaan sisällyttää kaikkien ikinä kirjoitettujen kielien kaikki merkit¹ (siis esim. riimukirjoituksen, muinaissanskriitin ja muinaiskiinan) ja tilaa on silti tuhansille uusille merkeille. Merkistöön ei kuitenkaan ole hyväksytty esimerkiksi klingonin aakkosia Star Trek -fanien suureksi pettymykseksi.
Unicode-standardi määrittelee kolme koodaustapaa eli miten kirjaimet ja numero vastaavat toisiaan: UTF-8, UTF-16 ja UTF-32². Tapojen ero näkyy oikeastaan siinä, kuinka paljon kuvakirjoitukseen perustuvia kirjoitusmerkkejä (esim. japani, kiina) sisältävät tiedostot vievät tilaa. Onneksi nykyiset ohjelmat yleensä tunnistavat automaattisesti koodaustavan.
Latinalaisiin kirjaimiin perustuvia merkkejä, ml. siis esperanton erikoismerkit, kirjoitettaessa järkevin tapa on UTF-8, joka on ollut jo pitkään MS Windows³ – ja MacOS⁴-käyttöjärjestelmien oletus. Valitettavasti joidenkin ohjelmien, esim. MS Outlook -sähköpostiohjelman, oletusmerkistö oli pitkään Windows-1252, mikä ei ole Unicode-merkistö.
UTF-8 merkistökoodausta tulee käyttää aina, kun enin osa tekstiä koostuu latinalaisiin tai kyrillisiin kirjaimiin perustuvista merkeistä.
¹: Huomaa, että koodaus määrittelee merkkivastaavuuden (esim. A:n koodi on 65 ja a:n 97) eikä ota kantaa tyyleihin. Toisin sanoen merkkien A, A, A ja A koodi on sama 65.
²: Sekä UTF-16:sta että UTF-32:sta on tarkkaan ottaen kolme versiota sen mukaan, missä järjestyksessä koodaus tapahtuu tietokoneen sisäisesti. Nämä ovat ns. BE-, LE- ja BOM-versiot, mutta onneksi tavallisten käyttäjien käyttämät ohjelmat tunnistavat nämä automaattisesti.
³: versiosta MS Windows XP lähtien
⁴: versiosta Mac OS X 10.6 lähtien