Zeph Le 28/09/2007 à 13:52 plop,
Je dois récupérer pour quelqun une base de données MySQL qui est dans un sale état : certains de ses enregistrements sont en UTF8, tandis que les autres sont en latin1 (ISO 8859-1). Je voudrais donc faire en sorte que tous les enregistrements soient dans le même encodage. Même s'il n'existe surement pas de méthode fiable à 100% pour ça, est-ce qu'il existe un outil de conversion de fichier texte quelconque qui pourrait essayer de nettoyer ça au maximum ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
ouh purée!
tu peux pas faire un dump des colonnes "sales" dans un fichier, convertir le fichier, puis réinsérer le dump?
RHJPP Le 28/09/2007 à 14:18 Tu peux utiliser PHP ?
Si oui, il y a :
mb_convert_encoding($string, "UTF-8", "UTF-8, ISO-8859-1");
vince Le 28/09/2007 à 17:45 J'ai eu un problème "similaire", les insert par phpmyadmin (en mode copier coller, pas en mode fichier sql) m'ont permis (mais avec du temps) de récupérer tout nickel...
Le plus propre, c'est de faire une boucle sur chaque ligne, voire chaque cellule (chaque attribut de chaque ligne), détecter si c'est de l'UTF-8 valide (avec une fonction validate UTF-8, il doit y en avoir), et si ça ne l'est pas, faire la conversion ISO-8859-1 -> UTF-8. Avec ça, les faux négatifs (UTF-8 non reconnu comme tel) sont nuls (à condition que l'UTF-8 qu'on a mis est valide, évidemment), les faux positifs (ISO-8859-1 pris pour de l'UTF-8) sont très improbables (je ne suis même pas sûr qu'un faux positif soit possible avec un texte en français).