Standaard wordt op Internet alleen gebruik gemaakt van het alfabet (de letters a t/m z). Om andere tekens (zoals ë, à, ñ) weer te geven, moet je tekst op een bepaalde manier worden gecodeerd. Voor verschillende tekens bestaan verschillende coderingen. Dit heet character encoding en moet per webpagina worden aangegeven. Deze encoding wordt aan de browser gestuurd, zodat deze weet welke tekens er moeten worden weergegeven.

Wanneer krijg ik met character encoding te maken?

Wanneer je blokjes ziet in plaats van tekens, of andere rare teksten, betekent dat vrijwel altijd dat er een mismatch is tussen de gegevens en de codering die je meestuurt naar de browser. Is de data in utf-8 en stuur je iso-8859-1 mee (of vice versa), dan zal het niet werken.

Hoe kan ik dit oplossen?

De encoding wordt op twee plaatsen bepaald: in de HTTP header en in de HTML header. Als beide aanwezig zijn, heeft de HTTP header in de meeste browsers voorrang. Je kunt een of beide encodings aanpassen naar de encoding van jouw gewenste taal. Hiervoor zijn twee mogelijkheden.

Oplossing mogelijkheid 1

Kies een specifieke character encoding uit. Op de volgende pagina vind je een volledig overzicht van officiële karaktersets: http://www.iana.org/assignments/character-sets. Of je kunt een van de volgende karaktersets kiezen :

windows-1253 Grieks
windows-1250 Centraal Europees
shift_jis Japans
iso-2022-kr Koreaans
windows-1254 Turks
gb2312 Chinees

Vervolgens voeg je helemaal bovenin jouw HTML bestand het volgende stukje code in (moet tussen de <HEAD> tags komen):

<meta http-equiv="Content-Type": content="text/html; charset=windows-1253" />

Hierin vervang je windows-1253 door de juiste karakterset.

Klaar! Je kunt nu met een browser als Firefox de effectieve encoding controleren (zoek in het menu naar Pagina Informatie).

Oplossing mogelijkheid 2

Een betere maar iets ingewikkeldere oplossing is om gebruik te maken van de UTF-8 karakter codering. Hiervoor heb je wel een UTF-8 editor nodig (zoals Ultra Edit).

Je hoeft hiervoor geen regels toe te voegen in de HTML van jouw bestand (als er maar geen andere encoding in staat). Zet wel een bestand via de FTP op jouw account genaamd “.htaccess” met daarin:

AddDefaultCharset utf-8

Het werkt nog steeds niet, wat nu?

Als je PHP in CGI mode gebruikt, werkt de AddDefaultCharset regel in .htaccess niet. En sommige PHP applicaties sturen standaard een encoding mee die je liever niet gebruikt. Daarom moet je de PHP encoding “overrulen”. Dit kan door in het PHP bestand een regel op te nemen met :

ini_set('default_charset','gb2312');

Vervang hierin natuurlijk gb2312 door de gewenste encoding.

Hoe voeg ik een charset header toe aan mijn Joomla site?

In principe is dat niet nodig aangezien Joomla een Meta tag meegeeft zoals boven onder oplossing 1 beschreven. Wanneer je toch een charset header wilt toevoegen, kun je de volgende code bovenaan de index.php van jouw template toevoegen :

header('Content-Type: text/html; charset=utf-8');

Je moet er dan wel voor zorgen dat de charset in de http header overeenkomt met de charset in de meta tag.

63