UTF8 Checklist

Gisterenavond heb ik een leuke en boeiende PHPBelgium meeting meegemaakt. Van de 2 boeiende sessies kom ik even terug op die van Juliette Reinders Folmer.  Vroeg of laat komt elke PHP developer in contact met UTF8. Een correcte implementatie hiervan gaat echter vaak niet zonder slag of stoot.

De algemene regel is dat ALLES in UTF8 moet gebeuren. Een enkele schakel die niet in UTF8 gebeurd zal voor verwarring zorgen op de server of in de browser met mogelijk corrupte data als gevolg.

  • Alle bestanden opslaan als UTF8, zonder Byte Order Mark
    Dit voor alle bestanden die door de applicatie gebruikt zullen worden, .php, .js, .html, .po, …
    Voor de .php bestanden is het ook belangrijk dat je ze opslaat zonder byte order mark. Doe je dit niet dan zal PHP de byte order mark zien voor de php open tag en kan dit resulteren in “headers already send”-errors.
  • UTF8 definiëren in de head-sectie van elke HTML pagina
    <meta http-equiv=”Content-type” value=”text/html; charset=UTF-8″ />
  • UTF8 veilige fonts
    Hou er rekening mee dat niet elk lettertype elk teken uit de UTF8-karakterset kan weergeven. Controleer dus best of de tekens opgenomen zijn voor de gebruikte talen en tekens.
    Arial Unicode MS is een lettertype dat zeer veel tekens bevat, maar helaas niet op alle systemen standaard beschikbaar is.
  • FTP verbinding maken in binary mode
    Upoad bestanden in binary mode. Bij het verzenden van bestanden in ASCII mode gaan de bestanden geconverterd worden naar de ASCII karaktetset.
  • MySQL databank volledig instellen op UTF8
    Dit zowel op databank, tabel als op veld niveau. Meestal zal de collatie utf8_general_ci de juiste zijn. Kies in elk geval voor een collatie die begint met utf8, het deel dat daar op volgt bepaald de sorteer volgorde als er een SORT zou gebeuren op dit veld.
  • MySQL connectie instellen voor UTF8
    Gebruik na het maken van de MySQL connectie: SET NAMES ‘utf8′ . Met dit commando worden de 3 parameters geconfigureerd die de karakterset van client, connectie en resultaten bepalen. (character_set_client, character_set_results, character_set_connection)
  • UTF8 HTTP header instellen
    Dit kan zowel vanuit PHP:
    header(’Content-Type: text/html;charset=utf-8′);
    Of nog eenvoudiger via een .htaccess-bestand:
    AddDefaultCharset utf-8
  • UTF8 Safe functions
    Veel string-functies, zoals bv. strlen() kunnen niet overweg met UTF8. De mbstring extensie van PHP voorziet in alternatieve functies die wel correct met UTF8 data overweg kunnen.

Volgende pagina’s zijn gebruikt als referentie:

Reageer op deze post