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 !

Tagués avec : ,
Publié dans Faites du Web, PHP

Laisser un commentaire

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

*