Problemen met rare karakters (bijvoorbeeld vierkantjes waar een é of € hoort te staan) worden meestal veroorzaakt door coderingsproblemen. Daarom is het belangrijk dat er overal dezelfde karakterset gebruikt wordt. Naar mijn weten is de meest gebruikte UTF-8. In dit artikel noem ik een aantal belangrijke punten bij het instellen van een codering.
HTML
Een meta tag in de head mee te geven met daarin de karakterset:
1 | < meta charset = "utf-8" > |
HTACCESS
Globaal een karakterset in te stellen:
1 2 | AddDefaultCharset utf-8 AddCharset utf-8 .atom .css .js .json .rss .vtt .xml |
PHP
Met PHP is het belangrijk om bij alle functies waar een encoding opgegeven kan worden, dit op te geven. Bijvoorbeeld bij de functie htmlspecialchars:
1 | htmlspecialchars( $string ,ENT_QUOTES, 'UTF-8' ); |
Mocht je al op PHP 5.4 draaien is dit niet nodig. Vanaf 5.4 is UTF-8 de standaard encoding! Tevens voor de zekerheid default_charset even op utf-8 zetten:
1 | ini_set ( 'default_charset' , 'UTF-8' ); |
MySQL
Bij het verbinden met een database (in dit geval MySQL) dient de karakterset opgegeven te worden. Dit dient bij mysql en mysqli tussen de verbinding en het selecteren van een database te gebeuren:
1 2 3 | mysqli_connect( $host , $username , $password ); mysqli_set_charset( 'utf8' ); mysqli_select_db( $database ); |
In het geval van PDO net even anders:
1 2 3 4 5 6 | $pdo = new PDO( 'mysql:host=' . $host . ';dbname=' . $database , $username , $password , array (PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ) ); |
Daarnaast bij het indelen van de database dient er overal als als charset; utf8 gekozen te worden en als collation: utf8_general_ci.
Javascript
Meestal niet nodig maar mochten er problemen voordoen, simpelweg charset=”utf-8″ toevoegen, ofwel:
1 2 3 | < script charset = "utf-8" > //Javascript hier </ script > |