Älä käytä AddDefaultCharset-direktiiviä
Huomasin konfiguroineeni erään asentamani www-palvelimen (Apache 2.2) väärin: siellä oli oletuksena päällä "AddDefaultCharset UTF-8". Koska tiesin, että suurin osa palvelimen kautta näytettävistä tiedostoista ei ole UTF-8:a, laitoin sen sijaan "AddDefaultCharset ISO-8859-1". Tämä oli virhe.
Palvelimella osa dokumenteista kun on jotain aivan muuta, esimerkiksi windows-1251-merkistöä. Monissa HTML-dokumenteissa on asianmukainen meta-elementti, joka kertoo, mitä merkistökoodausta dokumentissa käytetään. Selain osaa sitten näyttää dokumentin sen mukaan. Mutta jos oletusmerkistökoodaus on päällä, palvelin julistaa lähettämänsä vastauksen headereissa oletusmerkistökoodauksen (ISO-8859-1 tässä tapauksessa). Tämän seurauksena muita koodauksia olevat dokumentit, esimerkiksi kyrillisiä aakkosia sisältävät dokumentit näkyivät väärin.
Lesson learned: älä käytä Apachessa AddDefaultCharsettia, ellet tiedä, mitä olet tekemässä.
Kommentit
Elias Aarnio kirjoitti:
jukka kirjoitti:
Elias Aarnio kirjoitti:
Eero kirjoitti:
Tästä aiheesta löytyy edelleen aika huonosti tietoa (suomeksi, englanniksi), mutta UTF-8 on mieletäni hyvä ratkaisu, kunhan koko saitti on varmasti koodattu UTF-8 without BOM -tukevalla editorilla. Lisäksi tietenkin esim. data tietokantaan pitää tallentaa tällä charsetilla.