Merkistöongelmista
Käytettävä merkistö voi olla joko ISO-8859-1 tai utf-8. PHP:n 6-version on tarkoitus tukea utf-8-koodausta, joten se on suositeltava.
Seuraavat asiat vaikuttavat merkkien toimimiseen:
- mitä enkoodausta käytetään tietokannassa (taulu ja tietokanta -tasolla)
- mitä enkoodausta käytetään tietokantayhteydessä, kun kantaan yhdistetään
- mitä enkoodausta PHP käyttää sisäisesti
- mikä enkoodaus on määritelty sivun http-headereissä (esim. meta charset=utf-8")
- mikä enkoodaus on määritelty sivun html:ssä (http:n headerit menevät tämän edelle)
Muista sivuja laatiessasi:
- Varmistaa, että lähdekoodi on utf-8
esimerkiksi Notepad++: Encoding - Convert to utf-8 without BOM
-
Varmistaa, että lähdekoodiin on määritelty dokumenttityyppi ja siinä mahdollisuuksien mukaan charset. Lisäksi varmistaa, että head-osuuteen on lisätty meta-elementti merkistön määrittelyyn , esimerkiksi
<!DOCTYPE html
<head>
<title>Validointi, kokeilu, head kuntoon</title>
<meta charset=utf-8" />
<meta name="description" content="Tämä koe testaa validointia, hakukoneoptimoinnin alkeita ja merkistöjen käyttöä">
</head>
-
Antaa tietokannalle ohje siitä, että käytetään utf-8 -koodausta yhteyttä otettaessa (vasta yhdistämisen jälkeen!)
- lisää komento mysql_set_charset("utf8");
-
Asettaa PHP:n käyttämään utf-8 -koodausta:
- lisää seuraava lause PHP skriptin alkuun
header("Content-Type: text/html; charset=UTF-8");