Francescu e Dume

THE ROAD TOWARDS FREEDOM

Archive for août, 2007

Convertir un site en UTF8 - PHP/MySQL

Alors qu’il y a quelques années l’UTF8 naissait, réconcilliant le monde entier, on aurait pu se dire que tout le monde l’aurait adopté. Si aujourd’hui c’est bien loin d’être systématique, il ne s’agit pas forcément d’un manque de volonté, mais plutôt d’une difficulté à mettre en oeuvre l’UTF8 souvent déconcertante. Le problème d’encodage est récurrent, et est certainement plus impressionnant qu’il n’est vraiment compliqué. Voici donc les grandes étapes pour migrer votre application web en UTF8, et pourquoi pas conquérir de lointains marchés !

  • Requêtes HTTP
    • Par ordre de priorité pour le navigateur :
    • Fixer le parametre charset dans les requêtes HTTP (cf W3C)
      • dans apache remplacez AddDefaultCharset ISO-8859-1 par AddDefaultCharset UTF-8, (dans httpd.conf sinon rajoutez la ligne dans le .htaccess)
      • ou/et dans PHP avec header('Content-Type: text/html; charset=utf-8');
    • Mettre après le <head> dans votre fichier HTML le code suivant (ce code est connu de tous)
      • <meta content="text/html; Charset=UTF-8" http-equiv="Content-Type" />
  • MySQL
    • Ensuite, il faut premièrement changer les interclassements
      • de la base
        • ALTER DATABASE nomBase CHARACTER SET UTF8
      • des tables
        • ALTER TABLE nomTable CHARACTER SET UTF8
      • des colonnes
        • ALTER TABLE nomTable CONVERT TO CHARACTER SET UTF8
        • ceci changera toutes les colonnes de la table et convertira les données. Si vous aviez déjà mis de l’UTF8 dans une colonne avant d’en changer l’encodage il est encore possible de rétablir la cohérence des données :
          • ALTER TABLE nomTable CHANGE nomColonne nomColonne BLOB;
            ALTER TABLE
            nomTable CHANGE nomColonne nomColonne TEXT CHARACTER SET UTF8;
    • Puis il faut prévenir MySQL que vos interractions se feront en UTF8 en envoyant à chaque connexion :
    • SET NAMES UTF8
  • Editer en UTF8
    • Pour cela il faut configurer votre éditeur pour que vos fichiers soient en UTF8 (c’est nécessaire uniquement dans le cas de fichiers avec données sensibles - cad avec accents ou autres caractères non ASCII).
    • Veillez à placer l’encodage en UTF8 sans BOM car sinon le fichier contiendra un octet d’entête et PHP ne pourra plus envoyer de header ou de session (bug PHP#22108).
  • Enfin, attention à PHP, jetez un coup d’oeil à l’extension Mbstring, par exemple pour strlen, utilisez mb_strlen

Bonne chance à vous, et gardez à l’esprit que l’idée générale est d’avoir de l’UTF8 à tous les endroits de votre application.

16 comments

WebzineMaker - Import / Export RSS

WebzineMakerNotre collaboration avec la société ajaccienne WebzineMaker nous a cette fois amenés à travailler sur la nouvelle version (dite “V4″) de leur nouveau service. Nous avons donc réalisé deux fonctionnalités très intéressantes, à savoir l’import du contenu d’un fichier RSS dans le webzine, et l’export du contenu du webzine dans une autre plateforme (via la technologie des API de publication). Nous avions déjà travaillé avec cette technologie sur le projet xFruits afin de réaliser la brique RSS to MyBlog. Cette nouvelle fonctionnalité sera bientôt à disposition des heureux testeurs de la V4.

Read more

No comments