Mikä on mojibake?
Mojibake tarkoittaa lukukelvottomia merkkejä, jotka syntyvät, kun teksti tallennetaan yhdellä merkistökoodauksella ja luetaan toisella. Useimmiten UTF-8 luetaan vahingossa Windows-1252:na tai ISO-8859-1:nä. Jokainen erikoismerkin tavu näkyy silloin omana merkkinään. Yleiskatsauksen kuvioista löydät sivulta ä ä:n sijaan.
Yleisiä syitä
- Tietokantayhteys käyttää
latin1-merkistöä, vaikka tiedot on tallennettu UTF-8:na. - Verkkopalvelin lähettää
charset=ISO-8859-1, mutta sivu on tallennettu UTF-8:na. - Sähköposti- tai uutiskirjeohjelma ilmoittaa väärän merkistön.
- Vanha verkkosivusto tai siirretty WordPress-asennus sekoittaa Latin-1- ja UTF-8-dataa.
- Tekstiä kopioidaan ohjelmien välillä, jotka odottavat eri merkistöä.
Kahdesti rikki: ä
Jos jo rikkinäinen teksti muunnetaan vielä kerran väärin, syntyy kaksinkertainen mojibake: ä muuttuu ensin muotoon ä ja sitten muotoon ä. Mojibuster tunnistaa nämäkin tasot ja korjaa jopa kolme kerralla.
Kehittäjille: korjaa syy
- Lisää HTML-koodiin
<meta charset="utf-8">ja lähetä otsakeContent-Type: text/html; charset=utf-8. - Käytä MySQL:ssä ja MariaDB:ssä
utf8mb4-merkistöä sekä tauluille että yhteydelle (SET NAMES utf8mb4). - Tallenna lähdekooditiedostot UTF-8:na ilman BOM-merkkiä.
- Muunna teksti vain kerran: oman järjestelmäsi ja ulkomaailman rajalla.
Usein kysyttyä
Mitä merkki � tarkoittaa?
Se on korvausmerkki U+FFFD. Ohjelma lisää sen, kun se ei pysty lukemaan tavua. Alkuperäinen merkki on silloin kadonnut; Mojibuster näyttää, kuinka monta kohtaa asia koskee. Joskus itse tiedosto on vielä ehjä: kysymysmerkit kirjainten sijaan.
Voinko muuntaa myös HTML-koodit kuten ä?
Kyllä. Valitse Muunna myös koodit. Koodit kuten ä, ä ja ä muuttuvat silloin oikeiksi merkeiksi.
Tallennetaanko tekstini jonnekin?
Ei. Korjaus tapahtuu selaimessasi. Tekstiä ei lähetetä eikä tallenneta.
Toimiiko se muillakin kielillä?
Kyllä. Mojibuster korjaa kaikki UTF-8:sta väärin luetut merkit, esimerkiksi ruotsin å:n, norjan ja tanskan æ:n ja ø:n, saksan umlautit, ranskan aksentit, emojit ja japanilaisen kirjoituksen.