Encodage de caractères : ISO-8859-1 et UTF-8 dans WordPress
Décidément, mon problème d’encodage UTF-8 n’est pas complètement règlé. Je n’ai jamais eu autant de misère pour règler un problème très simple en théorie. Pour le moment, j’ai des billets en ISO-8859-1, des billets en UTF-8, et pas le temps de comprendre ou se situe le problème. En fin de semaine, je vais écrire un plugin wordpress pour règler ça une fois pour toute et pour tous.



Je ne connais pas trop Wordpress et je sais pas comment tu t’es rendu là, mais si tu as des tables qui contiennent des données en encodages mélangés, il devrait être facile de les corriger en utilisant la fonction PHP mb_convert_encoding qui est capable de détecter l’encodage initial. L’extension PHP mbstring doit être présente.
Un petit exemple… (non testé, et je ne connais pas la DB de Wordpress donc la requête est incorrecte)
$sSql = "SELECT id,body FROM entries"; $oRs = @mysql_query($sSql) or die("Query error: ".mysql_error()); while ($aRow = mysql_fetch_array($oRs)) { $sBodyUTF8 = mb_convert_encoding($aRow["body"],”utf-8″,”utf-8, iso-8859-1″); if ($oRs["body"] != $sBodyUTF8) { $sSql = “UPDATE entries SET body=’”.mysql_escape_string($sBodyUTF8).”‘ WHERE id=”.$oRs["id"]; @mysql_query($sSql) or die(”Query error: “.mysql_error()); } } mysql_free_result($oRs);Bonne chance!
Comment by Patrick — 2006/03/15 @ 01:23
Merci, c’est ça que j’allais faire à peu près. Techniquement, ce n’est pas trop difficile - m’enfin, habituellement. Mais j’ai l’impression qu’il y a quelque chose qui cloche sur le serveur, et je n’ai pas le temps de m’y attarder tout de suite. Je me suis permis d’ajouter un code/pre pour mieux afficher ta solution.
Comment by Robin Millette — 2006/03/15 @ 01:29
Merci, j’avais essayé de mettre un <pre> mais il a été strippé. :)
En tk lâche pas! UTF-8 is the way to go!
Comment by Patrick — 2006/03/15 @ 01:31
Ouais, je sais plus trop pourquoi j’avais installé ce wp en iso-8859-1, tous les autres que je maintiens (des tonnes de copies!) sont en utf-8.
Je suis sûr qu’un plugin va aider, pas seulement pour moi. Mais les solutions clean, ça prend plus de temps.
Bon, assez placoter, je dois finir ma présentation pour jeudi (demain!!). Merci encore pour les hints :)
P.S.: ça fait 7 ans maintenant que je fais du PHP, tellement hâte de voir PHP 6 pour ne plus penser au foutu encodage !
Comment by Robin Millette — 2006/03/15 @ 01:35
> tellement hâte de voir PHP 6 pour ne plus penser au foutu encodage !
Faudra que tu me brief sur ce feature, quand tu seras moins OQP. :)
Comment by Patrick — 2006/03/15 @ 02:00