Merkistöistä

Tämä sivu on tarkoitettu referenssiksi web-sivujen tekijöille ja muille kirjoittajille, jotka tarvitsevat vieraiden kielten aksentoituja merkkejä ja muita ASCII-merkistöön kuulumattomia Unicode-merkkejä. Mukana on lyhyt johdatus tietokoneissa käytettäviin merkistöihin (character repertoires, character codes).

Sisällys

Kirjoittamani HTML-opas sisältää myös asiaa symbolisista notaatioista, joita voi käyttää HTML-kielessä merkkien ilmaisemiseen. Jos merkistöasiat ovat jo hallussa, voit hypätä suoraan Unicode-karttoihin. Lisäksi olen kirjoittanut web-sivuilla käytettävistä väreistä ja kuvaformaateista.

ASCII-merkistö

ASCII, joka tulee sanoista American Standard Code for Information Interchange, on 7-bittinen, 128 koodipaikkaa sisältävä merkistö. Se ilmestyi vuonna 1968 ANSI X3.4 -nimisenä, ja vuonna 1972 se standardoitiin (US-ASCII). Printattavat merkit ovat koodipaikoilla 32–126. Koodit 0–31 ja 127 on varattu kontrollimerkeille. Kontrollimerkkeihin kuuluvat mm. rivinvaihto, tabulaattori ja Escape. Kaikki myöhemmin tällä sivulla käsiteltävät merkistöt ovat ASCII:n laajennuksia, joten koodipaikkojen 0–127 merkit ovat niissä samoja kuin ASCII:ssa. ASCII on datansiirrossa kaikkein turvallisin vaihtoehto. Enkoodaus on mahdollisimman yksinkertainen: jokaista lähetettävää merkkiä vastaa yksi oktetti (tavu), jonka arvo on sama kuin merkin ASCII-koodi.

ASCII riittää auttavasti neljän kielen tarpeisiin: latina, swahili, havaiji ja amerikanenglanti. ASCII-merkistössä on perinteisesti ollut useita kansallisia poikkeuksia. Esimerkiksi vasemman aaltosulun paikalla on skandinaavisessa variantissa ä ja pystyviivan tilalla ö. Oikean aaltosulun tilalla on å, vasemman hakasulun tilalla Ä, kenoviivan tilalla Ö ja oikean hakasulun tilalla Å. Kansallisia ASCII-versioita ei kuitenkaan enää käytetä. US-ASCII:n käyttö on standardin asemassa. Skandinaaviset kirjaimet ja muut länsieurooppalaisten kielten tarvitsemat aksentoidut merkit löytyvät ISO Latin-1 -merkistön koodipaikoilta 160–255.

ASCII-merkeillä &, < ja > on HTML-koodissa oma erikoismerkityksensä. Ongelmien välttämiseksi ne pitää aina ilmoittaa symbolisilla notaatioilla &amp;, &lt; ja &gt;.

US-ASCII (ISO-646-IRV, ISO-646-US)

3233343536 3738394041 4243444546 47
 !"#$ %&'() *+,-. /
4849505152 5354555657 5859606162 63
01234 56789 :;<=> ?
6465666768 6970717273 7475767778 79
@ABCD EFGHI JKLMN O
8081828384 8586878889 9091929394 95
PQRST UVWXY Z[\]^ _
96979899100 101102103104105 106107108109110 111
`abcd efghi jklmn o
112113114115116 117118119120121 122123124125126 127
pqrst uvwxy z{|}~  

Numero 32 on välilyönti. ASCII:n kontrollimerkkejä ovat mm. tabulaattori (9), LF (10), CR (13), Escape (27) ja Delete (127). Linefeed, jota kutsutaan Unixissa nimellä Newline, on rivinvaihto. Carriage Return palauttaa kursorin rivin alkuun. Kun kirjoitat tekstiä esimerkiksi Windowsin Notepadillä ja painat Enteriä rivin lopussa, Windows sijoittaa rivinvaihdon kohdalle sekä CR- että LF-merkit. Unixissa riittää pelkkä LF eli rivinvaihto. Jokainen on varmasti joskus ihmetellyt kilometrin pituisia rivejä—Notepad ei osaa muuntaa Unixissa tallennettua tekstitiedostoa DOS/Windows-muotoon. Sama ongelma esiintyy kun avataan Mac-tekstitiedostoa Windowsissa. Mac sijoittaa rivien loppuun pelkän CR-merkin.

Kun uppaat palvelimelle web-sivuja tai muuta tekstimuotoista aineistoa, käytä aina FTP:n ASCII-siirtomuotoa, jolloin käyttöjärjestelmien mahdolliset erot rivinvaihdoissa korjataan tiedostonsiirron yhteydessä.

ISO Latin-1

ISO Latin-1 eli ISO-8859-1 sisältää ASCII-merkistöön kuuluvien normaalien aakkosten, numeroiden ja yleisimpien välimerkkien lisäksi useimmat länsi- ja pohjoiseurooppalaisten kielten tarvitsemat aksentoidut merkit. Sen merkkivalikoimalla voi kirjoittaa mm. suomea, englantia, saksaa, hollantia, ranskaa, italiaa, espanjaa, katalaania, portugalia, ruotsia, norjaa, tanskaa ja islantia. ISO Latin-1 on perinteisen 7-bittisen ASCII-merkistön 8-bittinen laajennus. Se on varsinkin Unix-maailmassa lähes standardin asemassa, ja web-sivuilla se on turvallisin vaihtoehto. Koodipaikkojen 0–127 merkit ovat samoja kuin ASCII:ssa. Laajennukset sijaitsevat koodipaikoilla 128–255. Enkoodaus on sama kuin ASCII:ssa, joten jokaista koodipaikkaa vastaa yksi tavu.

Koodipaikat 0–31, 127 ja 128–159 on varattu kontrollimerkeille. Printattavia merkkejä on siis yhteensä 191, joista 95 on ASCII-merkkejä. Myöhemmin tällä sivulla käsiteltävät Windows-merkistöt käyttävät koodipaikkoja 128–159 ajatusviivan, euron ja muiden ISO Latin-1 -merkistöstä puuttuvien merkkien esittämiseen. Vaikka selaimesi tukisikin näitä koodeja, aiheutat niitä käyttämällä yhteensopivuusongelmia.

HTML 3.2 -suosituksessa oletusmerkistönä ja enkoodauksena oli käytännössä ISO-8859-1. Uudemmassa HTML 4.0:ssa koodauksen ilmoittaminen on sivun tekijän vastuulla. Jollei palvelin ilmoita sitä, sen voi hätätapauksessa ilmoittaa sivun HEAD-osuuden sisällä. Koodauksen ilmoittamatta jättäminen ei useimmiten aiheuta ongelmia, jos kysymyksessä on ISO-8859-1.

    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
    </HEAD>

ISO Latin-1 -merkit tuotetaan Windowsissa pitämällä Alt-näppäin alhaalla ja näppäilemällä merkin desimaalikoodi. Koodin eteen tulee nolla: esim. espanjalainen ylösalainen huutomerkki ¡ tuotetaan näppäinyhdistelmällä Alt-0161. HTML:ssä merkki voidaan esittää desimaalikoodilla &#161; tai symbolisella notaatiolla &iexcl;.

Koodipaikkojen 160–255 merkkejä ei välttämättä tarvitse esittää HTML-koodissa desimaalikoodilla tai symbolisella notaatiolla. Jos työskentelet Windowsissa ja tarvitset ylösalaista huutomerkkiä, voit aivan hyvin tuottaa sen suoraan näppäimistöltä painamalla yhdistelmän Alt-0161. Jos selain näyttää notaatiot &#161; ja &iexcl; oikein, se tajuaa saman merkin myös ”raakadatana”. Kaikki eivät kuitenkaan muista harvoin tarvittavien merkkien koodinumeroita, joten kannattaa opetella alusta saakka käyttämään symbolisia notaatioita.

Seuraavassa taulukossa on kaikki ISO Latin-1 -merkistön merkit koodipaikasta 160 ylöspäin. ASCII-merkit 32–126 on jätetty pois, koska ne (toivottavasti) löytyvät näppäimistöstä ja tämän sivun alusta. Merkin desimaalikoodi on ensimmäisessä sarakkeessa, toisessa sarakkeessa on varsinainen merkki ja kolmannessa on symbolinen notaatio (entity reference).

160 &nbsp;
161¡&iexcl;
162¢&cent;
163£&pound;
164¤&curren;
165¥&yen;
166¦&brvbar;
167§&sect;
168¨&uml;
169©&copy;
170ª&ordf;
171«&laquo;
172¬&not;
173 &shy;
174®&reg;
175¯&macr;
176°&deg;
177±&plusmn;
178²&sup2;
179³&sup3;
180´&acute;
181µ&micro;
182&para;
183·&middot;
184¸&cedil;
185¹&sup1;
186º&ordm;
187»&raquo;
188¼&frac14;
189½&frac12;
190¾&frac34;
191¿&iquest;
192À&Agrave;
193Á&Aacute;
194Â&Acirc;
195Ã&Atilde;
196Ä&Auml;
197Å&Aring;
198Æ&AElig;
199Ç&Ccedil;
200È&Egrave;
201É&Eacute;
202Ê&Ecirc;
203Ë&Euml;
204Ì&Igrave;
205Í&Iacute;
206Î&Icirc;
207Ï&Iuml;
208Ð&ETH;
209Ñ&Ntilde;
210Ò&Ograve;
211Ó&Oacute;
212Ô&Ocirc;
213Õ&Otilde;
214Ö&Ouml;
215×&times;
216Ø&Oslash;
217Ù&Ugrave;
218Ú&Uacute;
219Û&Ucirc;
220Ü&Uuml;
221Ý&Yacute;
222Þ&THORN;
223ß&szlig;
224à&agrave;
225á&aacute;
226â&acirc;
227ã&atilde;
228ä&auml;
229å&aring;
230æ&aelig;
231ç&ccedil;
232è&egrave;
233é&eacute;
234ê&ecirc;
235ë&euml;
236ì&igrave;
237í&iacute;
238î&icirc;
239ï&iuml;
240ð&eth;
241ñ&ntilde;
242ò&ograve;
243ó&oacute;
244ô&ocirc;
245õ&otilde;
246ö&ouml;
247÷&divide;
248ø&oslash;
249ù&ugrave;
250ú&uacute;
251û&ucirc;
252ü&uuml;
253ý&yacute;
254þ&thorn;
255ÿ&yuml;

Muut 8-bittiset merkistöt

ISO Latin-1:n lisäksi ISO-8859-standardiin kuuluu muitakin merkistöjä, joissa koodipaikoille 160–255 on sijoitettu tietyn kielialueen tarvitsemia merkkejä. Joitain esimerkkejä:

Melkein kaikissa selaimissa on tuki ISO-8859-merkistöille. Tshekinkielinen, puolalainen tai turkkilainen sivu näkyy selaimessasi oikein, jos tarvittava informaatio sivulla käytetystä enkoodauksesta on saatavilla. Lisäksi vaaditaan kyseisen kielen merkit sisältävä fontti.

Jos kirjoitat esimerkiksi puolankielisen web-sivun, voit käyttää ISO Latin-2 -merkistöä. Tiedosto pitää tehdä editorilla, joka osaa tallentaa sen ISO-8859-2-koodauksella. Myös palvelimen pitää lähettää tieto enkoodauksesta. HTTP-protokollassa palvelin lähettää rivin

    Content-Type: text/html;charset=ISO-8859-2

Jos tietoa oikeasta enkoodauksesta ei ole saatavilla, sivu ei toimi. Esimerkiksi puolan käyttämä poikkiviivallinen pieni L-kirjain sijaitsee ISO-8859-2-merkistössä koodipaikalla 179. Jos selain renderoi sivun ISO-8859-1:n mukaisesti, kyseisen merkin kohdalla näkyy yläindeksi kolme (³), jonka positio ISO-8859-1:ssä on 179.

Jos haluat tietää mitkä ISO-8859-merkistöt kattavat tärkeimmät eurooppalaiset kielet, katso sivua Eurooppalaisten kielten merkit.

[ISO Latin-9:n uutuudet taulukkona] Pyrkimyksenä oli vähitellen korvata ISO Latin-1 uudella maaliskuussa 1999 virallistetulla ISO Latin-9 -merkistöllä, jonka numero on hieman sekavasti ISO-8859-15 (ISO-8859-9 on jo varattu turkkilaiselle merkistölle). ISO Latin-9:ssä on poistettu joitakin erittäin harvoin tarvittavia ISO Latin-1 -merkkejä ja näin saatu tilaa mm. euron symbolille ja oe-ligatuurille, ei kuitenkaan ajatusviivalle jota ainakin minä olisin kaivannut. Tuki tälle merkistölle on harvinaista, liian monien ohjelmien oletusmerkistö on ISO-8859-1. Nyt kun Unicoden käyttö on yleistynyt, Latin-9:lle ei enää ole tilausta. Uudet ja poistuneet merkit näkyvät oheisessa taulukossa.

Windows-merkistö sisältää myös useita kielialueversioita. Ne eivät ole yhteensopivia vastaavien ISO-8859-merkistöjen kanssa. Kaksi poikkeusta kuitenkin löytyy. USA:ssa, Länsi-Euroopassa ja Skandinaviassa käytettävä Windows-1252 (CP1252, Win Latin-1) vastaa täysin ISO-8859-1-merkistöä lukuun ottamatta koodipaikkoja 128–159. Turkkilainen Windows-1254 on identtinen ISO-8859-9-merkistön kanssa lukuun ottamatta koodipaikkoja 128–159.

Kontrollimerkeille varattu kielletty alue 128–159 on otettu käyttöön—Windows-merkistöihin kuuluu ”ylimääräisinä” esim. ajatusviiva, kaarevat lainausmerkit, euron merkki ja trademark-symboli. Merkit saadaan Windowsissa aikaan pitämällä Alt-näppäin alhaalla ja näppäilemällä merkin desimaalikoodi. Desimaaliluvun eteen tulee aina nolla. Länsieurooppalaisessa Windows-1252-merkistössä ajatusviiva on Alt-0151, mikro-etuliite µ on Alt-0181 ja é on Alt-0233.

Jos nolla unohdetaan edestä pois, Windows tulkitsee numeron DOS-merkistön koodiksi. Microsoft kutsuu näitä vanhoja merkistöjä ”OEM-koodisivuiksi”, ja edellä mainitut Windows-merkistöt ovat ”ANSI-koodisivuja”. OEM-koodisivuihin kuuluvat mm. alkuperäisessä IBM PC:ssä käytetty CP437 (DOS Latin-US), länsieurooppalainen CP850 (DOS Latin-1), keskieurooppalainen CP852, balttilainen CP775 ja kreikkalainen CP737. Niiden alkuosat koodipaikkaan 127 saakka vastaavat ASCII:ta, mutta koodipaikat siitä ylöspäin eivät vastaa muita standardeja. DOS-koodisivut ovat historiaa. Niitä tarvitaan nykyään ainoastaan vanhojen DOS-ohjelmien tuottaman tekstin lukemiseen.

Macintosh käyttää sekin omia merkistöjään, mutta ne eroavat ISO-standardista yhtä paljon kuin Microsoftin koodisivut. Mukana on isompi valikoima matemaattisia symboleita, esimerkiksi neliöjuuri ja integraali. Seuraavat ISO Latin-1:een kuuluvat merkit puuttuvat länsieurooppalaisesta MacRoman-merkistöstä:
×  ¤  ¦  ¹  ²  ³  ¼  ½  ¾  Ý  ý  Ð  ð  Þ  þ
MacRoman sisältää 47 merkkiä, jotka eivät kuulu ISO Latin-1 -merkistöön ja 25 merkkiä, jotka eivät kuulu Windows-1252-merkistöön. Euro on ollut mukana Mac OS 8.5 -järjestelmästä lähtien.

Windows-merkistön erikoisuudet

Älä käytä koodipaikkoja 128–159 web-sivuilla! Vaikka suurin osa selaimista toimii Windows-ympäristössä, on olemassa myös Mac- ja Unix-koneita. Jos haluat web-sivullesi ajatusviivoja, kaarevia lainausmerkkejä, euron tai muita ISO Latin-1 -merkistöön kuulumattomia merkkejä, ilmoita merkit HTML-koodissa joko symbolisilla notaatioilla tai Unicode-desimaalikoodeilla. Jos käytät Windows-merkistön desimaalikoodeja 128–159, ainoastaan Windows-koneet näyttävät sivun oikein. (Unicodesta on lisää asiaa tämän sivun lopussa.)

Ajatusviiva kirjoitetaan HTML:ssä &#8212; tai &mdash;. Mahdollisimman väärä tapa on käyttää Windows-koodia &#151;. Jos annat MS Wordin muuntaa Word-dokumentin HTML-muotoon, tarkista että lopputulos on täysin puhdas koodipaikoista 128–159. Wordin käyttäminen HTML:n tekemiseen ei muutenkaan ole suositeltavaa.

Taulukossa DEC tarkoittaa merkin desimaalikoodia Windows-1252-merkistössä. UC on Unicode-koodi desimaalimuodossa. HTML-sarakkeessa on symbolinen notaatio. Taulukko esittää Windows-merkistön ISO Latin-1 -standardista poikkeavat merkit:

[Windows-merkistön ISO Latin-1 -standardista poikkeavat merkit taulukkona]

Unicode

ISO 10646 -standardia vastaava Unicode-merkistö on ISO Latin-1:n laajennus samassa mielessä kuin ISO Latin-1 on ASCII:n laajennus. Koodipaikkojen 0–255 merkit ovat samoja kuin ISO Latin-1:ssä. Unicodessa on yli 95 000 merkkiä. Tarkoitus on kattaa maailman kaikkien kielien tarpeet. Merkistö on jaettu useisiin lohkoihin, joista löytyy tarvittavat merkit mm. heprealle, arabialle, hindille, tamilille, thaille, kiinalle, japanille ja korealle. Valikoimassa on lisäksi matemaattisia ja teknisiä symboleita. Olen koonnut 700 merkkiä käsittävän Unicode-kartan, jota voit käyttää referenssinä.

Unicoden luonnollinen enkoodaus on UCS-2 (jokainen merkki käyttää 2 tavua) tai UCS-4 (4 tavua). Yleisemmin käytettävä enkoodaus on UTF-8, jossa merkkiin käytetään useampia tavuja vain koodipaikan 127 yläpuolella. Muut merkit (ASCII-merkit) käyttävät yhden tavun.

HTML 3.2 -suosituksessa oletusmerkistönä ja enkoodauksena oli käytännössä ISO-8859-1. Uudemmassa HTML 4.0:ssa koodauksen ilmoittaminen on sivun tekijän vastuulla. Koodauksen ilmoittamatta jättäminen ei useimmiten aiheuta ongelmia, jos kysymyksessä on ISO-8859-1. Esimerkissä palvelin ilmoittaa UTF-8-enkoodauksen:

    Content-Type: text/html;charset=UTF-8

HTML 4.0 käyttää nimenomaan Unicodea merkkien notaatiossa. Vaikka palvelin lähettäisi tiedon mistä tahansa enkoodauksesta, symboliset notaatiot ja numeeriset viittaukset HTML:ssä viittaavat aina Unicodeen. Esimerkiksi yläindeksi kolme (³) voidaan ilmoittaa koodilla &#179; vaikka sivun enkoodaus olisi ISO-8859-2, jossa positio 179 tarkoittaa poikkiviivallista pientä L-kirjainta. Ajatusviiva ilmoitetaan koodilla &#8212; vaikka enkoodauksena olisi koodipaikoille 0–255 rajoittunut ISO-8859-1. Tiedostonsiirrossa käytettävä koodaus ja dokumentissa käytettävä merkkivalikoima ovat siis kaksi eri asiaa. Standardeissa määritelty dokumentin merkkivalikoima (document character set) on aina ISO 10646 eli Unicode.

Otetaan esimerkiksi web-sivu, jossa käytetään sekä latinalaisia että kyrillisiä merkkejä. Sivulla on suomenkielistä ja venäjänkielistä tekstiä. Ongelman ratkaisemiseen on kolme vaihtoehtoa:

Käyttöjärjestelmien ja ohjelmien Unicode-tuki on nykyään siinä määrin yleistynyt, että voit huoletta käyttää Unicodea ja UTF-8-enkoodausta web-sivuilla ja tekstitiedostoissa. Monikieliset dokumentit kannattaa tallentaa UTF-8-muotoon, jolloin ISO-koodisivuja ei tarvita.

SC UniPad on ehkä paras Unicode-tekstieditori Windows-ympäristöön. Se osaa tallentaa dokumentin UTF-8-enkoodauksella. Voit tehdä UniPadillä monikielisiä web-sivuja käyttämällä ohjelman mukana tulevia näppäimistökarttoja ja merkistökarttoja (katso tätä kuvaa tai tätä kuvaa). Windows 2000:n ja Windows XP:n Notepad (Muistio) osaa myös tallentaa UTF-8-muotoon, mutta muilta osin se on äärimmäisen riisuttu tekstieditori, mitään lisäominaisuuksia ei ole. MS Wordissä Unicode-merkkejä voi liittää dokumenttiin valitsemalla menusta Insert / Symbol (kuva). Windowsin Character Map voi kopioida leikepöydälle Unicode-merkkejä (kuva).

Windowsissa Unicode-merkkejä voi tuottaa näppäimistöltä seuraavilla tavoilla:

Voit testata selaimesi Unicode- ja fonttituen seuraavalla taulukolla, jossa HEX tarkoittaa merkin Unicode-koodia heksadesimaalimuodossa, DEC on sama desimaalimuodossa ja HTML-sarake sisältää symbolisen notaation. Neljännessä sarakkeessa on selaimesi renderoima merkki. Olen tehnyt myös isomman Unicode-kartan.

HEXDECHTMLmerkki merkin Unicode-nimi
U+0160352&Scaron;Š LATIN CAPITAL LETTER S WITH CARON
U+0161353&scaron;š LATIN SMALL LETTER S WITH CARON
U+017D381 Ž LATIN CAPITAL LETTER Z WITH CARON
U+017E382 ž LATIN SMALL LETTER Z WITH CARON
U+20138211&ndash; EN DASH
U+20148212&mdash; EM DASH
U+20188216&lsquo; LEFT SINGLE QUOTATION MARK
U+20198217&rsquo; RIGHT SINGLE QUOTATION MARK
U+201C8220&ldquo; LEFT DOUBLE QUOTATION MARK
U+201D8221&rdquo; RIGHT DOUBLE QUOTATION MARK
U+20308240&permil; PER MILLE SIGN
U+20AC8364&euro; EURO SIGN
U+21228482&trade; TRADEMARK SIGN
U+21928594&rarr; RIGHTWARDS ARROW
U+221A8730&radic; SQUARE ROOT
U+22488776&asymp; ALMOST EQUAL TO
U+263A9786  WHITE SMILING FACE

Seuraavaksi vähän vaativampi Unicode- ja fonttitesti. Kreikkalaiset, kyrilliset ja heprealaiset merkit löytyvät nykyään useimmista Windowsin perusfonteista, mutta muita alla olevan taulukon merkkejä ei välttämättä ole tarjolla. Tämän sivun CSS-tyylisäännöissä ei ole ehdotettu mitään erityisiä fontteja taulukon soluille, joten selaimen pitäisi löytää sopivat fontit. Fontteja pääsee valitsemaan Internet Explorerissa valitsemalla menusta ”Tools / Internet Options”, sitten välilehti General ja lopuksi painike Fonts.

kreikka Δεν καταλαβαίνω
venäjä Каков поп, таков и приход    
heprea אחר צהריים טובים
georgia საქართველო
armenia բարի երեկոյ
arabia وعليكم السلام! كيف الحال؟
persia (farsi) پیوندهای به این صفحه
hindi कोई बात नहीं
tamili மன்னிக்கவும்
thai ราชอาณาจักรไทย
kiina 中华人民共和国
japani 英語が話せますか
korea 고맙습니다

Kopioi laatikkoon mitä tahansa tekstiä, esimerkiksi yllä oleva japaninkielinen lause. JavaScriptillä tehty työkalu muuntaa kaikki koodipaikan 127 yläpuolella olevat merkit Unicode-desimaalikoodeiksi. Tästä voi olla hyötyä, jos haluat käyttää web-sivulla ISO-8859-1-enkoodausta. Yleensä kuitenkin kannattaa käyttää UTF-8:aa, jolloin kaikki merkit voidaan syöttää sellaisenaan ilman desimaalikoodeja.


  

Linkkejä


 
Markku Immonen <wired.poet@sci.fi>

Viimeksi muokattu: 15.2.2006

Sivukartta