Merkistö

Merkistö tai koodisivu on tietotekniikassa ja tietoliikenteessä sopimus, joka määrittelee, miten bittiyhdistelminä esiintyvät binääriluvut tulee tulkita johonkin kirjoitusjärjestelmään kuuluviksi merkeiksi. Tietokone pystyy käsittelemään oikein vain sellaisia merkkejä, jotka sisältyvät sen tuntemaan merkistöön. Koska merkistöjä on useita erilaisia, on myös oltava selvillä, mitä merkistöä kulloinkin on käytettävä. Väärän merkistön käyttö johtaa helposti informaation vääristymiseen tai katoamiseen.
Kaikki nykyaikaiset tietokoneet käsittelevät dataa kahdeksanbittisinä tavuina, joten yhdellä tavulla voidaan esittää 256 arvoa. Yksi merkki vie tilaa vähintään yhden tavun ja laajoissa merkistöissä ehkä enemmänkin. 
Merkki tietoteknisenä käsitteenä.
Tietokoneen muistissa kukin lukuarvo vastaa tiettyä merkkiä, ja esimerkiksi ASCII-merkistössä lukuarvot 63–67 kytkeytyvät merkkeihin seuraavasti:
Erillisiksi merkeiksi merkistössä jäsentyvät isot ja pienet kirjaimet, samoin kuin numerot sekä erikois- ja välimerkit. Merkeiksi lasketaan myös itsessään näkymättömät tai kuviottomat kirjoitusmerkit, kuten välilyönti, ja lisäksi merkistöön yleensä sisältyy erityisiä teknisiä ohjaus- eli kontrollikoodeja. Merkin käsitteeseen ei sisälly kirjoitusmerkin leikkaus eli tyyli, joka voi vaihdella melkoisesti kirjasinlajin mukaan.
Eri kirjoitusjärjestelmiin kuuluvat kirjaimet katsotaan usein erillisiksi merkeiksi, vaikka ne näyttäisivät keskenään aivan samanlaisilta, kuten latinalainen suuraakkonen A, kyrillinen suuraakkonen А ja kreikkalainen suuraakkonen Α (alfa, pienaakkosena α). Yhden kirjoitusjärjestelmän piirissä käytettävät merkitkään eivät aina ole ulkonaisesti erotettavissa toisistaan, sillä Unicode-merkistössä on esimerkiksi useita viivamerkkejä hieman erilaisiin tarkoituksiin: tavallinen yhdysviiva (U+002D eli niin sanottu yhdysmerkki-miinus) sopii tarvittaessa sekä yhdysviivaksi että etenkin tietotekniseksi miinusmerkiksi, mutta vaihtoehtoisesti voidaan käyttää erityistä yhdysmerkkiä (U+2010), joka on tarkoitettu käytettäväksi pelkästään yhdysviivana, sitovaa yhdysmerkkiä (U+2011), jonka jälkeen rivinvaihto ei ole sallittu, sekä miinusta (U+2212), joka on tarkoitettu erityisesti typografiseksi miinusmerkiksi. Näistä typografinen miinusmerkki on muita selvästi pitempi, mutta muut ovat (tai ainakin niiden pitäisi olla) keskenään aivan samannäköisiä.
Historia.
Ensimmäisinä sähköisinä merkistöinä voidaan pitää kaukokirjoitinlaitteissa jo 1800-luvulla käytettyjä ”5-bittisiä” Baudot-koodistoja, joihin kuului 26 varsinaista merkkiä ja kuusi ohjauskoodia esimerkiksi merkistön vaihdolle ja kirjoituspään palautukselle., Niistä voi katsoa myös 1960-luvulla kehitetyn 7-bittisen ASCII-merkistön polveutuvan. Yhteistä vanhoille merkistöille on yleensä se, että merkit on valittu vain tiettyä kieltä varten: esimerkiksi Yhdysvalloissa kehitetty ASCII soveltuu melko hyvin amerikanenglannin kirjoittamiseen, mutta muun muassa suomen, ruotsin ja saksan kielissä tarvittavia kirjaimia Å/å, Ä/ä, Ö/ö, Ü/ü ja ß ei siinä ole. Tämän vuoksi merkistöistä kehitettiin useita rinnakkaismuotoja eri maiden tarpeita varten. Suomessa käytettiin vielä 1980-luvulla yleisesti ASCII:n SF7-muunnosta, jossa eräät erikoismerkit oli korvattu suomessa ja ruotsissa tarvittavilla kirjaimilla.
Koska ASCII on 7-bittinen ja tietokoneet käyttävät yleisesti 8-bittistä tavua, monet tietokonevalmistajat tarjosivat käyttöön laajempia merkistöjä, joissa ylimääräiseksi jäänyt bitti otettiin käyttöön. Tällä tavoin ASCIIn mahdollistamien merkkien määrä kaksinkertaistui 128:sta 256:een. Näissä merkistöissä 128 ensimmäistä merkkiä vastasivat yleensä ASCIIta, mutta loput merkkipaikat voitiin omistaa esimerkiksi muiden kielten tarvitsemille kirjaimille. Eri tietokonevelmistajien laajennetut merkistöt olivat kuitenkin keskenään hyvin erilaisia.
Yhtenäisten 8-bittisten merkistöjen kehittämiseksi vuonna 1985 kehitettiin ISO 8859 -standardi, joka määritteli aluksi neljä laajennettua eurooppalaista merkistöä. Koska edes kaikkia eurooppalaisten kielten vaatimia kirjaimia ei voida mahduttaa 256 merkkiin, kielet oli jaoteltava alueittain ryhmiin, joista kullekin luotiin oma merkistö.
Merkistöjen välisistä eroista johtuu, että jos luetaan tekstitiedostoa, joka on tallennettu toisenlaisella merkistöllä, osa merkeistä korvautuu toisilla. Tällöin tekstiä voi olla vaikea tai mahdoton ymmärtää. Jos tiedoston alkuperäinen merkistö tunnetaan, tiedosto voidaan kääntää toisen merkistön mukaiseksi, mutta jos kohdemerkistössä ei ole käytössä samoja merkkejä kuin alkuperäisessä tekstissä, osa merkeistä voi hävitä. Kaikki ISO 8859 -merkistöt ovat kuitenkin yhteensopivia ASCIIn kanssa, joten numerot 0–9, kirjaimet A–Z ja a–z sekä tavallisimmat väli- ja erikoismerkit pysyvät aina samoina.
ISO 8859 -merkistöt.
ISO 8859 on ryhmä ISO-standardointielimen määrittelemiä merkistöjä. Merkistöjen numerointi on juokseva, eikä uudempi merkistö välttämättä ole aikaisempaa parempi tai korvaa sitä. Merkistön koko nimi sisältää standardin nimen, juoksevan numeron ja hyväksymisvuoden, esimerkiksi: "ISO/IEC 8859-15:1999".
Uusia merkistöjä ISO 8859 -perheeseen ei ole enää tarkoitus kehittää, vaan sen sijaan toivotaan Unicoden vähitellen korvaavan muut merkistöt.
Muut kahdeksanbittiset merkistöt.
ISO-merkistöjen lisäksi on olemassa useita kansallisia ja epävirallisia merkistöjä. Näistä suosituimpia ovat KOI-8-muunnelmat, jotka ovat käytössä Itä-Euroopassa, kuten KOI8-R Venäjällä, KOI8-U Ukrainassa ja Bulgarian MIK. Myös vietnamin VISCII ja intialaisten kielten ISCII ovat tällaisia kahdeksanbittisiä merkistöjä.
Tämän lisäksi useilla valmistajilla on omia kielikohtaisia merkistöjään: Microsoftilla DOS- ja Windows-koodisivut, Applella MacRoman ja MacCyrillic, HP:lla HP-Roman8 jne.
Suosittu Microsoft Windows käyttää seuraavia merkistöjä (Windows-termistön mukaan "koodisivuja"), joista osa on standardin mukaisia, osa hieman muunnettuja ja osa omia:
Monitavuiset merkistöt.
Kahdeksanbittinen koodaus ei riitä Itä-Aasian kielissä tarvittavien merkkien esittämiseen, joten siellä on jouduttu kehittämään oma tekniikka, jotta sikäläisiä kieliä ylipäätään voisi kirjoittaa tietokoneella. Nämä merkistöt sisältävät ASCII-merkkien lisäksi yleiset paikallisesti tarvittavat merkit, mutta eivät muiden Itä-Aasian kielten merkkejä tai eurooppalaisten kielten erikoismerkkejä.
Ensimmäinen tällainen merkistö oli japanilainen JIS X 0208, joka otettiin käyttöön jo 1978. JIS X 0208 oli ensimmäinen "monitavuinen merkistö", jossa yhden merkin tallentamiseen käytetään useita tavuja tietokoneen muistissa. JIS X koostuu 94 × 94 merkin ruudukosta, johon voidaan määrittää 8836 merkkiä. Käytännössä merkit koodataan kahdella peräkkäisellä ASCIIn kirjoitusmerkillä. Merkistöstä on myöhempi versio JIS X 0212 (1990), joka lisäsi 5801 lähinnä nimissä käytettyä harvinaista kanji-merkkiä ja JIS X 0213 vuodelta 2000, jossa molempiin lisättiin lisää merkkejä.
Monitavuisen merkistön käsittely ja tiedon välittäminen voi olla vaikeaa, kun ohjelmat ja protokollat olettavat käytettäväksi kahdeksanbittistä merkistöä. Monitavuisten merkistöjen välittämiseksi on kehitetty koodauksia eri tarkoituksiin:
Useissa Itä-Aasian maissa seurattiin Japanin esimerkkiä ja kehitettiin oma 94 × 94 -merkistö vastaavalla tekniikalla. Tällaisia ovat
Näitä merkistöjä yhdistettyinä ISO-2022- tai EUC-koodaukseen käytetään yleisesti sähköposteissa ja niitä merkitään MIME-otsakkeissa tyypeillä ISO-2022-JP/CN/TW/KR.
Tosin Taiwanissa on yleisemmin käytetty Big5-merkistöä ja Hongkongissa tästä edelleen muunneltua omaa merkistöä HKSCS. Kiinan hallitus on määrännyt pakolliseksi GB 18030-2000 -merkistön tukemisen kaikissa Manner-Kiinassa myytävissä käyttöjärjestelmissä.
Unicode.
Koska merkistöjen runsaudesta huolimatta millään niistä ei voinut kirjoittaa montakaan kieltä yhteen tekstitiedostoon, kehitettiin monikielinen ratkaisu Unicode, jonka versio 5.2 sisältää yli 100 000 merkkiä. Niillä voidaan kirjoittaa suurinta osaa nykyään puhuttavista kielistä. Unicoden on tarkoitus sisältää kaikki merkit, jotka ovat sisältyneet toisiin merkistöihin, jotta muunnos Unicodeen olisi aina mahdollista tehdä. Kun ohjelmistotuki Unicodelle laajenee, suurin osa muista merkistöistä voidaan hylätä. Kuitenkaan ideogrammeja käyttäville kielille Unicode ei ole pystynyt tarjoamaan täyttä tukea, minkä vuoksi onkin yritetty kehittää kattavampia järjestelmiä, kuten TRON, UTF-2000 ja Giga Character Set.
Unicode-standardi ei määrittele yksittäiselle merkille tiettyä esitysmuotoa, vaan kiinteän koodiarvon. Standardissa on useita koodaustapoja, joista yleisimmät ovat vaihtelevatavuiset UTF-8- ja UTF-16- sekä kiinteätavuiset UCS-2- ja UCS-4-koodaukset.