Mikrojen merkistöjen aiheuttamista ongelmista Webissä

Tiivistelmä

Niin sanotussa Windows-merkistössä on eräitä merkkejä, mm. ajatusviivat, jotka eivät kuulu ISO-Latin-1-merkistöön. Tämä aiheuttaa joskus pahojakin ongelmia, kun Windows-ympäristössä tehty dokumentti siirretään Webiin tarkistamatta konversio-ohjelman tuottamaa tulosta. Ratkaisuna on korvata kyseiset ongelmalliset merkit lähinnä vastaavilla ISO-Latin-1-merkeillä, kuten ajatusviiva yhdysviivalla.

Ongelman oireet

Tässä käsiteltävät ongelmat ilmenevät Word Wide Webin käyttäjille siten, että joidenkin Web-dokumenttien teksti näyttää omituiselta. Tavallisin oire on, että tekstistä puuttuu merkkejä. Oireet vaihtelevat käytettävän katseluohjelman ja muun ympäristön mukaan, esim. Viimeksi mainittu ilmenemistapa on ikävin, ja se esiintyy käytettäessä tämän hetken suosituinta katseluohjelmaa Netscapea, ainakin sen joillakin versioilla ja erään X-palveliohjelmiston kautta käytettynä. Lisäksi lisäoireena voi olla Netscapen sekoaminen niin, että jatkossa merkit ylipäänsäkin näkyvät miten sattuu.

Ongelman syy

Ongelman syynä on se, että dokumentissa käytetään ISO-Latin-1-merkistöön kuulumattomia merkkejä, erityisesti sellaisia koodeja, jotka kyseissä merkistössä on nimenomaisesti varattu ei-kirjoittuville merkeille eli kontrollimerkeille. Ongelman tekee melko tavalliseksi se, että osa näistä merkeistä on ns. Windows-merkistössä (jota usein kutsutaan ANSI-merkistöksi) kirjoittuvia merkkejä kuten ajatusviiva, promillemerkki ym. Usein esitetty väite, jonka mukaan Windows-merkistö on sama kuin ISO-Latin-1, ei siis pidä paikkaansa.

Vaikka HTML-kielen määrittelyt, esim. RFC 1866, puhuvat merkistöasioista yleisin ja tulkinnanvaraisin sanakääntein, niin käytännössä merkistönä on ISO-Latin-1. Siitäkin osa katseluohjelmista tukee vain osajoukkoa. Missään tapauksessa ei pidä olettaa, että dokumentissa olevat muut kuin ISO-Latin-1-merkit näkyisivät missään järkevässä muodossa . Ne saattavat näkyä ihan halutulla tavalla dokumentin tekijän omalla ohjelmalla ja omassa käyttöympäristössä katseltuina - mutta täysin käsittämättömiltä muualla.

Usein Web-dokumentit on tuotettu jollakin muunnosohjelmalla eli konvertterilla. Näyttää ilmeiseltä, että kyseisten ohjelmien tekijätkään eivät aina ole olleet tietoisia ISO-Latin-1-merkistön ja Windows-merkistön eroista. Niinpä ohjelmat saattavat "päästää lävitseen" edellä mainittuja Windowsin omia merkkejä ilman muunnoksia (tai väärin muuntaen).

Vastaavia ongelmia, joissa jokin merkki esitetään ISO-Latin-1:n vastaisella tavalla, esiintyy myös dokumenteissa, jotka on tuotettu esim. PC- tai Mac-merkistöä käyttävästä tiedostosta. Olen nähnyt mm. dokumentteja, jotka on ilmeisesti konvertoitu PC-merkistöä käyttävästä muodosta ja joissa ö-kirjaimen tilalla on oktaalikoodi 224; se on ö:n koodi PC-merkistössä mutta kuuluu ISO-Latin-1:ssä kontrollimerkeille varattuun alueeseen. (Korrekti muunnos olisi sellainen, jossa koodina on ISO-Latin-1:n mukainen 366 tai jossa ö:n tilalla HTML-dokumentissa on symbolinen merkintä ö.)

Ongelman ratkaisu

Ongelman ratkaisuna on lyhyesti sanottuna se, että ei käytetä Web-dokumenteissa merkkejä, joiden oktaaliset koodiarvot ovat 200 - 237. Tämä voi vaatia erilaisia toimenpiteitä, joista eräitä kuvataan jäljempänä.

Jos käytät konversio-ohjelmia, jotka muuntavat esim. Word-dokumentteja HTML:ksi, tarkista, ettei tuloksessa ole koodiarvoja 200 - 237. Tämä voidaan tarvittaessa tehdä vaikkapa pienellä C-ohjelmalla.

Windows-merkistön ongelmalliset merkit

Windows-merkistöstä on eri käsikirjoista erilaisia muunnelmia, eikä sille näytä kovin helposti löytyvän virallista määritelmää. Seuraava esitys kuitenkin vastannee tavallista tilannetta ja lienee käsiteltävän käytännön ongelman kannalta riittävä.

ISO-Latin-1-merkistössä (oktaalisia) koodiarvoja 200 - 237 on nimenomaisesti varattu kontrollimerkeille, siis muille kuin kirjoittuville merkeille. Sen sijaan Windows-merkistössä osa niistä on kirjoittuvia merkkejä. Erään kuvauksen perusteella ne ovat seuraavat; esitän sen mukaisen englanninkielisen nimen ja oktaalikoodin sekä suomenkielinen kuvailuni ja ehdotukseni tavasta korvata merkki ISO-Latin-1-merkillä tai -merkeillä:

baseline single quote   202  rivin alareunassa oleva puolilainausmerkki     '
florin                  203  floriinin merkki, kursiivi-f                   f
baseline double quote   204  rivin alareunassa oleva kokolainausmerkki      "
ellipsis                205  poisjätön eli ellipsin merkki, kolme pistettä  ...
dagger                  206  risti (kuolinhetken t. alaviitteen merkki)     k. tai ¹
double dagger           207  kaksoisristi (yleensä alaviitteen merkki)      ²
circumflex accent       210  sirkumfleksi                                   ^
permile                 211  promillemerkki                                 o/oo
S Hacek                 212  iso hattu-s                                    Sh tai SH
left single guillemet   213  vasemmanpuoleinen ranskalainen lainausmerkki   "
OE ligature             214  O:n ja E:n yhdistelmä eli ligatuuri            Oe tai OE
left single quote       221  vasemmanpuoleinen puolilainausmerkki           '
right single quote      222  oikeanpuoleinen puolilainausmerkki             '
left double quote       223  vasemmanpuoleinen kokolainausmerkki            "
right double quote      224  oikeanpuoleinen kokolainausmerkki              "
bullet                  225  (musta) "pallukka"                             o tai -
endash                  226  lyhyt ajatusviiva                              -
emdash                  227  pitkä ajatusviiva                              -
tilde accent            230  tilde                                          ~
trademark ligature      231  tavamerkin symboli, TM (yhtenä merkkinä)       TM
s Hacek                 232  pieni hattu-s                                  sh
right single guillemet  233  oikeanpuoleinen ranskalainen lainausmerkki     "
oe ligature             234  o:n ja e:n yhdistelmä eli ligatuuri            oe
Y Dieresis              237  Y, jonka päällä on treema eli kaksi pistettä   Y
Korvaavia merkkejä käytettäessä on tietysti käytettävä harkintaa, jossa otetaan huomioon asiayhteys. Koska Windows-merkistössä on enemmän kirjoittuvia merkkejä kuin ISO-Latin-1:ssä, muunnoksessa häviää väistämättä informaatiota. Tilanteesta riippuu, onko tämä vakavaa. Jos edellä mainittuja Windows-merkkejä sisältävä dokumentti halutaan sijoittaa Webiin siten, että merkit säilyvät sellaisinaan, niin ainoa mahdollisuus on tallettaa se kuvamuodossa (esim. Postscript-muodossa). Yleensä tämä ei ole tarpeellista.

Erityisiä huomautuksia edellä mainituista merkeistä ja niiden korvaamisesta:

Lisätietoja

Merkistöasioita yleisesti käsittelee TKK:n tietoliikenneoppaan luku Merkistöt tietokoneissa ja tietoliikenteessä.

Eri merkistöjä kuvailee varsin laajasti (koodi- ja muunnostaulukoita) Timo Tuhkasen kirjoittama, TKK:n atk-keskuksen v. 1994 julkaisema opas Erilaisia tietokoneissa käytettäviä merkistöjä. (Tätä opasta ei ole Webissä, koska sen muuntaminen - juuri merkistöongelmien takia - olisi kohtuuttoman iso työ.)


Jukka Korpela
Jukka.Korpela@hut.fi
18.6.1996