UTF-8 Karakterset

Door 19 november 2012Tips & Trucs

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:

<meta charset="utf-8">

HTACCESS

Globaal een karakterset in te stellen:


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:

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:

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:


mysqli_connect($host,$username,$password);
mysqli_set_charset('utf8');
mysqli_select_db($database);

In het geval van PDO net even anders:


$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:


<script charset="utf-8">
//Javascript hier
</script>