WordPress et encodage UTF-8

wordpress_icon_blue

J’ai mis à jour WordPress hier, entre deux corrections de copies. D’habitude lorsque je fais une grosse mise à jour, je la fait d’abord sur mon installation locale, sur ma machine.

Cela me permet de déceler les problèmes éventuels et de ne pas planter la base du site.

Cette fois-ci, non seulement je l’ai faite en locale mais je l’ai en plus faite sur un sous-domaine, histoire d’être vraiment sûr de mon coup. Mais cette fois-ci j’ai eu droit à une grosse étape supplémentaire, nécessaire pour la pérennité du site…

Encodage UTF-8

Cela fait plusieurs années – depuis 2004 en fait – que je peste contre l’encodage des articles du blog : au départ, j’ai commencé à écrire mes articles en Latin-1 (ISO 8859-1).

Cet encodage est celui utilisé par défaut sur MySQL (version 3 et 4) et WordPress ne stipulait pas à ce moment-là l’encodage des tables SQL lors de leur création. Mes données ont donc été un temps en ISO 8859-1.

Je suis ensuite passé à l’UTF-8 avec WordPress 2.0.4. Curieusement, tout s’affichait correctement dans les navigateurs, alors que la base de données était toujours en Latin-1.

L’installation locale de WordPress m’a révélé l’ampleur des dégâts : tous les accents étaient encodés de deux manières différentes, sur 2 octets (ISO 8859-1) ou sur 4 octets (UTF-8) selon la date d’écriture des articles.

Malheureusement, je n’ai trouvé aucun script de conversion donc j’indique ici la méthode que j’ai utilisé pour tout convertir en UTF-8 :

1. exportation de la base dans un fichier SQL via PHPmyadmin.

2. remplacement des occurrences “latin1” par “utf8” via Notepad++.

Encodage utf8 3. replacement de chacun des accents encodés par des accents normaux. Je me suis créé une petite table d’équivalence des accents en regardant quelques uns de mes articles. J’en ai remplacé en tout près de 40 000…

Tous les caractères accentués semblent commencer par un A majuscule tildé. C’est ce que j’ai recherché. Il ne reste plus qu’à trouver les équivalences.

4. création d’une nouvelle base de donnée au format UTF-8 Unicode (utf8), interclassement utf8_unicode_ci

5. importation du fichier SQL modifié. Comme il est désormais en UTF-8, tout passe normalement comme prévu, même la création des tables (d’où l’importance de l’étape 2).

C’est ce qui m’a pris le plus de temps. C’est une bonne chose de faite toutefois, je peux maintenant éditer des articles avec PHPmyadmin, chose impossible auparavant.

Mise à jour

Pour la mise à jour proprement dite, je n’ai eu qu’à rechercher les nouvelles version des plugins, grandement aidé dans cette tâche par WordPress.

Et comme tous les nouveaux fichiers se trouvaient dans un sous-répertoire grâce au sous-domaine de test, je n’ai eu qu’à les glisser-déposer à la racine. Mise à jour en moins d’une minute, montre en main.

Mes plugins

J’ai mis à jour Pimp My Login, le plugin qui personnalise la boîte de connexion. Par contre il me faudra un peu plus de temps pour Disposable Registrations Killer parce que la manière dont sont gérées les erreurs dans le fichier wp-login.php a changé. J’en ai d’ailleurs touché deux mots sur trac.

User Online Reloaded va quant à lui être complètement réécrit quand j’aurais plus de temps. C’est quelque chose que j’aurais dû faire dès le départ : au lieu de patcher le code de quelqu’un d’autre, j’aurais dû écrire le mien.

Pas d’estimation de sortie là par contre. J’ai un agenda plutôt chargé ces jours-ci !

Articles conseillés :

6 pensées sur “WordPress et encodage UTF-8”

  1. c’est vraiment un casse tète de gérer les accents sur wordpress surtout quand on utilise des thèmes payants , je suis dans le même problème et malgré mon expérience dans le développement web , je suis là entre tout refaire a la main ou abandonner le cms wordpress

    Reply

Opinions