Html-tiedostoja on tehty latin-1 -merkistökoodauksella. Sitten pelvelinkoneeseen on vaihdettu distro ja järjestelmän merkistöksi on määritelty utf-8. Apache2:n oletusmerkistöksi on asetettu latin-1. Hyvä. Homma pelaa siltä osin, mutta... Kun palvelinkoneella tekee uusia tiedostoja, niin ne ovatkin oletuksena utf-8 -koodattuja (niitä tekee jotkut kolmannen osapuolen ohjelmatkin).
Kokeiluissa on ilmaantunut sellainenkin seikka, että webbisivua katseleva selain ei näytä sivua header-osan merkistömääritysten mukaan, vaan palvelimelta tulevan merkistökoodin mukaan. Eli skandit näkyvät oudosti joillakin sivuilla.
Kysymys: Millä tavalla kaikki webbisivut saisi muutettua utf-8:ksi? Luulisi, että tähän kysymykseen on törmännyt muutkin. Google-haut eivät tuoneet suoraa vastausta kuitenkaan. Yhden hakemiston tiedostojen merkistön voisi vaihtaa näin:
recode -v ISO_8859-1..UTF-8 *.html
sed -i s/iso-8859-1/utf-8/ *.html
Ensimmäinen uudelleenkoodaa tiedoston merkistön ja jälkimmäinen vaihtaa headeriin merkistömääritelmän (aikas kätevä sinänsä). Mutta... Järjestelmässä on myös php-sivuja.
Sitten tuon menetelmän kaatava yllätys kokeiluissa: Jotkut sivut onkin saatu kavereilta ja ne on tehty Windowsissa, koodauksena windows-1252. Heh. Levyltä voi löytyä vielä muitakin merkistökoodauksia webbisivuina...
Kysymys: Onko järkevämpi tehdä sh-skriptihässäkkä, joka osaisi nuo kaikki muuntaa utf-8:si? Vai perlillä? Vai C++:lla vai javalla? Olen itse päätynyt java-ohjelmaan. Onko parempia ehdotuksia? Valmiita ratkaisuja?
Yksi mahdollisuus on pitää webbisivut latin-1:sinä, mutta pitkän päälle se tuskin tulee onnistumaan.