1

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 ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

ouh purée!

tu peux pas faire un dump des colonnes "sales" dans un fichier, convertir le fichier, puis réinsérer le dump?

3

le problème c'est que la base est trop grosse pour faire le tri à la main (26mo), et qu'il n'y a aucune logique dans la répartition "données UTF8" / "données latin1" : au sein d'une même table, certaines lignes sont en UTF8 et d'autres en latin1; je sais pas comment ils s'y sont pris, mais si le but était de compliquer au maximum la réparation, c'est réussi grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

et tu sais trouver l'encodage de chaque ligne ou tu dois le détecter? sorry

j'le vois mal en automatique si t'as pas au moins ça smile

5

Tu peux utiliser PHP ?
Si oui, il y a :
mb_convert_encoding($string, "UTF-8", "UTF-8, ISO-8859-1");
avatar

6

squalyl (./4) :
et tu sais trouver l'encodage de chaque ligne ou tu dois le détecter? sorry

bah je le "vois", l'objectif étant justement de trouver un outil capable de le détecter ^^ (parceque les éditeurs de texte considèrent habituellement que toutes les données d'un fichier sont encodées de la même façon, ce qui est logique)
Thepro (./5) :
Tu peux utiliser PHP ?
Si oui, il y a :mb_convert_encoding($string, "UTF-8", "UTF-8, ISO-8859-1");

Ah si c'est fiable ça va peut-être m'aider oui, merci pour la suggestion happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

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...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

8

je m'en suis sorti avec la fonction mb_convert_encoding, à quelques lignes près (modifiables à la main), tout a l'air d'avoir été fait correctement smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

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).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

A priori, c'est ce que fait la fonction mb_convert_encoding : détecter l'encodage, et effectuer la transformation en fonction du résultat. Enfin j'imagine, puisque la doc de php.net est plutôt light sur cette fonction, c'est juste ce que je suppose de son fonctionnement en allant voir les fonctions similaires (mb_detect_order et mb_detect_encoding)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)