Zenphoto et les caractères étendus

caractère étendu mal décodé Depuis la mise à jour de Zenphoto 1.2, j’avais des problèmes avec les caractères étendus. La version 1.2 est la première version entièrement internationalisée, et je suis passé en UTF-8 lors de l’upgrade. Sauf que mes tables avaient initialement été créées en Latin1. Après la mise à jour, tout était devenu bancal. Il était temps de faire quelque chose.

Je devais passer en UTF-8 lors de la saisie d’un nouvel album (et pendant ce temps les anciens albums étaient mal affichés comme dans l’image ci-dessus), puis revenir en European ISO pour obtenir un affichage correct pour les anciens comme les nouveaux albums.

La seule solution était d’exporter la base, et de la réimporter en UTF-8. Simple sur le papier, mais je n’aime pas trop ce genre de manip, il y a toujours un risque que l’importation se passe mal, etc… Je me suis donc d’abord fait la main sur ma base en local, chose indispensable avant de se lancer sur celle du serveur.

Comme attendu, ce n’était pas si simple, et les premiers essais se révélèrent peu concluants. Je m’en suis sorti en remplaçant tous ces caractères par leur code HTML. Je ne sais si c’est très propre, mais en tout cas cela fonctionne.

La manip

– Exporter une par une les tables suivantes par l’interface phpMyAdmin : zen_albums, zen_images et zen_comments (zen_ est le prefixe des tables de Zenphoto). Pensez à cocher l’option « DROP TABLE » sur la page d’export. Copier/coller le résultat de l’exportation dans un fichier. Vous récupérez ainsi 3 fichiers à sauvergarder en local avec l’extension « .sql ».

– Editer ces fichiers avec un éditeur de texte. Nous allons utiliser la fonction « Rechercher – Remplacer » que tout éditeur de texte doit avoir.

Dans la première partie, la table est recréée  (instruction CREATE TABLE). Remplacer DEFAULT CHARSET=latin1 (ou quoique ce soit d’autre) par DEFAULT CHARSET=utf8, et toutes les valeurs « COLLATE latin1_general_ci » par « COLLATE utf8_unicode_ci ». Ceci va permettre de recréer la table avec les bons paramètres.

Pour le reste, il va maintenant falloir remplacer tous les caractères étendus par leur valeur HTML. On trouve des tables sur internet très facilement, par exemple ici : c’est la colonne « numerical HTML encoding of the Unicode character » qui nous intéresse. Vous verrez une liste de ce genre :

html code Il ne reste plus qu’à remplacer tous ces caractères présents dans vos tables par le code. Parcourez aussi rapidement les fichiers pour vous assurer qu’aucun autre codage n’est présent. Si c’est le cas, remplacer le également.

Il ne vous reste qu’à réimporter le fichier, toujours par l’interface phpMyAdmin. Vérifiez que l’instruction DROP TABLE est présente dans votre fichier avant de l’exécuter.

Et voilà, Zenphoto est maintenant en UTF-8 définitivement.Tout fonctionne, les anciens comme les nouveaux albums sont bien affichés, et même l’éditeur « à la volée » qui permet de modifier la texte tout en parcourant l’album (il faut être identifié et avoir les droits pour ce faire, bien sûr).

Laisser un commentaire

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