Avec la publication, hier, de la version 2.7 “Coltrane” de WordPress, les articles et autres billets détaillant ses nombreuses nouveautés pleuvent de toutes parts. Nous allons d’ailleurs probablement y revenir nous-mêmes dans un proche avenir.
Lors des mises à jour de nos propres sites, toutefois, nous sommes tombés sur un aspect un peu moins plaisant apportés par la dernière mouture du populaire moteur de blogs/gestionnaire de contenus open source. Au tout le moins dans notre cas. Il ne s’agit pas d’un véritable bug de WordPress en soi, mais d’une situation à laquelle certains d’entre vous pourraient aussi se trouver confrontés, en particulier si votre site a déjà un certain âge et un certain nombre de mises à jour derrière lui.
Nous avons nommé l’encodage de caractères. Le sujet est complexe, mais en gros la situation est la suivante:
- vous avez un site ou un blog mû par WordPress (dans une version précédente) et écrit dans une langue autre que l’anglais (contenant en particulier des signes diacritiques, comme le français
- vous en faites une sauvegarde complète (fichiers, en particulier le dossier wp-content et son contenu, ainsi que le fichier wp-config.php, et surtout le contenu de votre base de données MySQL)
- vous effectuez votre mise à jour en suivant scrupuleusement les instructions (et en débarassant par la même occasion votre installation de tous les fichiers obsolètes qui s’y sont cumulés avec le temps)
- vous procédez à la mise à jour des tables de votre base de données MySQL, en suivant l’assistant de WordPress
Tout se passe bien, seulement voilà: en vérifiant votre site, soudainement tous les signes diacritiques, accents, cédilles, etc., sont remplacés par des suites de caractères incompréhensibles! Ou plutôt incompréhensibles, devrait-on dire… Vous voyez de quoi on parle?
Bienvenue dans l’enfer des incompatibilités d’encodages de caractères!
Le problème n’est à vrai dire pas nouveau; il a même touché notre propre site à un tel nombre de reprises que nous avons préféré (entre autres raisons) utiliser cette excuse pour procéder à une opération Table rase cet été et mettre au repos les archives de la première dizaine d’années d’Almaren.
La question des encodages de caractères est horriblement complexe, et nous n’en sommes pas des spécialistes, nous n’allons donc pas la détailler ici. Qu’il vous suffise de savoir que, par défaut, WordPress utilise UTF-8 comme encodage de caractères dans sa base de données. Mais les toutes premières versions de WordPress utilisaient un autre encodage (latin1 sauf erreur). Pire, certaines versions de MySQL utilisaient également un encodage de leurs tables du type latin1_swedish, et cet encodage est peut-être encore présent dans les tables de votre propre base de données.
Cette situation est d’autant plus probable que votre site est vieux, et peut tout particulièrement surgir lors d’un changement d’hébergeurs (autres réglages MySQL?) ou d’une mise à jour du moteur de votre site (WordPress dans le cas présent).
Peu importe d’ailleurs les détails techniques, la question pour vous est naturellement: que faire pour remettre en état votre site?!
Du calme: avant tout vous avez une sauvegarde de l’ancienne version de votre site (n’est-ce pas? cf point 2. ci-dessus). Ensuite, des instructions détaillées existent afin de vous aider à convertir l’encodage de votre base de données. Trop détaillées, probablement, et absolument décourageantes pour les utilisateurs moins technophiles (ou anglophobes).
Eh bien, ne désespérez plus! Hier, en essayant de résoudre ce même problème pour deux sites, nous sommes tombés sur une petite extension WordPress tout à fait adaptée à nos besoins: UTF-8 Database Converter. Procédez comme suit:
- Assurez-vous d’avoir bien sauvegardé le contenu de votre base de données. Si ce n’est pas le cas, faites-le maintenant (vous pouvez, par exemple, employer l’excellente extension WP-DBManager, de Lester ‘GaMerZ’ Chan)
- Installez l’extension UTF-8 Database Converter et activez-la
- Allez dans l’onglet “UTF-8 Database Converter”, sous “Extensions” (entre parenthèses, avec la nouvelle interface utilisateur de WordPress 2.7 il serait bon qu’une certaine standardisation de où les options des extensions sont placées prenne forme: entre “Extensions”, “Outils” et “Réglages”, on peut chercher longtemps! Avis aux auteurs d’extensions)
- Vous recevrez un grand message rouge d’alerte, “WARNING - VERSION NOT SUPPORTED”: ignorez-le. Dans notre cas, l’extension a très bien marché avec WordPress 2.7 (et de toutes manières vous avez fait une sauvegarde du contenu de votre base de données, n’est-ce pas?)
- Avant la dernière étape, vous recevez encore un avertissement: “WARNING - DATA MAY BE LOST”. À nouveau, ignorez-le et procédez
- Laissez l’extension effectuer son travail, sans refermer la fenêtre de votre navigateur
- Rafraîchissez l’affichage de votre site: tout devrait être rentré dans l’ordre!
Si votre problème est résolu, vous pouvez sans autre désactiver l’extension à présent.
Si cela n’a pas résolu votre problème, restaurez votre installation WordPress et essayez les conseils donnés sur la page Converting Database Character Sets de la documentation officielle WordPress. Cela reste votre meilleure chance et votre dernier ressort.
N.B.: ce billet vous propose un tuyau pour résoudre un problème d’encodages de caractères assez précis et particulier. Ce n’est pas une solution miracle pour tous les cas de figure, et nous n’assurons pas de support sur ce sujet. Si vous avez besoin d’aide pour votre propre site, je suis à louer professionnellement…







