Faire un site avec pour encodage utf-8

Parfois on a besoin de coder, créer des sites prenant en charge le format d’encodage des caractères UTF-8. Dans le cas d’un site multi-langue (français, anglais, russe).
Donc voici quelques conseils (dont j’ai eu pas mal besoin) pour que tout fonctionne dans le meilleur des mondes.

Petit rappel (merci Wikipedia) : UTF-8 (UCS transformation format 8 bits) est un format de codage de caractères défini pour les caractères Unicode (UCS). Chaque caractère est codé sur une suite d’un à quatre octets. UTF-8 a été conçu pour être compatible avec certains logiciels originellement prévus pour traiter des caractères d’un seul octet.
UTF-8 est standardisé dans la RFC 3629 (UTF-8, a transformation format of ISO 10646). Le codage était aussi défini dans le rapport technique 17 de la norme Unicode. Il fait maintenant partie intégrante de la norme dans son chapitre 3 Conformance et est également approuvé par l’Organisation internationale de normalisation (ISO), l’Internet Engineering Task Force (IETF) et la plupart des organismes de normalisation nationaux.
L’IETF requiert qu’UTF-8 soit supporté par les protocoles de communication d’Internet échangeant du texte.

Le rappel étant effectué voyons comment mettre en place l’UTF-8 pour un site web.

Pour Apache

Dans le fichier de configuration d’apache (httpd.conf) vérifier que ces deux lignes soit présente (bien que normalement elles doivent y être).

AddCharset UTF-8 .utf8
AddCharset utf-8 .utf8

Si ce n’est pas fait, ajoutez-les.
Dans le cas où vous n’avez pas accès à ce fichier de configuration (hébergement mutualisé…), voici d’autre technique pour forcer une page à s’afficher en UTF-8.

Voici d’autres techniques pour forcer un affichage de vos pages en utf-8.

Htaccess

Le fameux fichier .htaccess qui sert à plein de chose (Ne fait pas encore le café, mais ca va venir, j’en suis sur !).
Pour ce faire ajouter simplement ces deux lignes :

AddDefaultCharset UTF-8
AddDefaultCharset utf-8

Cela va indiquer à Apache que le type d’encodage qu’il va recevoir est de l’utf-8.

Directement dans php.

Cette ligne de code doit apparaitre dans chaque pages de votre site (ou seulement celle qui doivent être en utf-8.

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

Elle doit être positionné avant tout autre script ou code (donc de préférence à la première ligne).
Si votre si comporte une page index.php où tout passe par elle, il suffit de la mettre dans celle-ci.
De plus votre HTML/XHTML doit comporter ce bout de code (afin d’être aux normes et d’indiquer au navigateur web que votre page est encodé en utf-8.

Remarque.

Lorsque vous allez créer vos pages web, vos script php, pensez à enregistre vos fichier au format utf-8 (sinon cela n’a plus de sens).

Si vous utilisez une base de données (quelle qu’elle soit) pensez à définir le format d’encodage de vos champs text et varchar en utf-8.
Par exemple pour MySql c’est cette valeur que vous devez choisir «utf8_general_ci» dans la liste déroulante.

Deux fonctions php bien utiles.
utf8_decode() : Documentation en Français pour utf8_decode
utf8_encode() : Documentation en Français pour utf8_encode

Bon ben si avec tout çà, votre site n’est pas utf-8 ready, ben, heu…, on trouvera bien une solution !

Cette entrée a été publiée dans Faites du Web, PHP. Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>