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 !
Laisser un commentaire