J'ai un blog (Wordpress) et certains de mes messages plus anciens ont un problème d'encodage de caractères où £ affiche comme £ (c'est-à-dire un signe dièse précédé d'un 'A' majuscule avec un chapeau).Est-il correct de corriger une erreur de codage de caractères à l'aide de SQL REPLACE?
Le problème est au niveau DB, donc j'allais exécuter l'instruction SQL suivante:
update wp_posts set post_content = replace(post_content, ‘£’, ‘£’);
Serait-ce stupide?
Informations générales (non requis pour lire):
Comment ce problème est-il passé? Je ne sais pas. Le blog a été à travers différentes mises à jour (y compris de Wordpress version 2.1.3 lorsque la table par défaut CHARSET a changé de latin1 en utf8) et a été migré vers et à partir de diverses machines et je suppose que Wordpress doit avoir écrit des caractères codés UTF-8 la base de données qui avait un CHARSET de latin1, ou vice-versa. Je sais que j'aurais dû être plus prudent (oui j'ai lu The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)).
Comment ai-je fait en sorte que cela ne se reproduise plus? Je me suis assuré que mes encodages sont cohérents. Toutes les tables MySQL utilisent CHARSET utf-8 et la section HEAD du jeu de pages de blog <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />