Salut tout le monde...

Je m'occupe d'un site web gérant différentes bases de données provenant de diverses sources. Ces bases de données sont parfois plutôt grosses (plus de 1Go pour certaines tables) et leur contenu est très hétéroclite (différentes langues insérées via différents dispositifs, aspirateurs web, inject, etc).

Comme il fallait s'y attendre, je me retrouve confronté à un gros problème de charsets. Le site est en UTF-8, les tables et BDD aussi, le lien MySQL aussi... mais certaines données sont mal accentuées DANS la BDD.

Par exemple: ÄŒesky en lieu et place de Česky (essayez en forçant l'encodage de votre navigateur en ISO8859, vous aurez bien ce résultat! Smiley cligne )

Pour certaines données, je pourrais refaire une importation, mais ce n'est aucunement le but. Je cherche à obtenir un script PHP (mais je suis aussi ouvert à tout autre programme) qui serait capable de transformer une chaine erronée en chaine valide.

Bien sûr, j'ai essayé les différentes fonctions (utf8_encode(), iconv(), mb_convert()) de PHP... sans succès. Ces fonctions ne résolvent pas la plupart des problèmes.

Si quelqu'un a un début d'info, je suis plus que preneur...


D'avance, merci beaucoup...
Pour ceux que ca intéresse, il semblerait que j'ai un début de solution avec ceci:

http://linux.softpedia.com/get/Text-Editing-Processing/Filters/Mguesser-36842.shtml

Contenu du fichier texte:
a écrit :
İthal ve yerli ağaçlardan muhtelif kalınlık ve ebatlarda kontrplak imalatı yapmaktadır.


En effet, en procédant ainsi:
./mguesser -n3 < fichiertexteachecker


J'otiens ceci:
a écrit :
0.5510823727 tr iso-8859-9
0.5510823727 tr cp1254
0.5439200997 tr cp857


Ensuite à l'aide d'iconv:
iconv -f utf-8 -t cp1254 < fichiertexteachecker


J'obtiens enfin:
a écrit :
&#304;thal ve yerli a&#287;açlardan muhtelif kal&#305;nl&#305;k ve ebatlarda kontrplak imalat&#305; yapmaktad&#305;r.



Le summun, c'est qu'en plus, j'ai la langue... Plus qu'à automatiser tout ça... Smiley cligne



P.S.> désolé pour les entitées, mais je vous jure, ce sont les bonnes Smiley langue
Bonjour,

Pour commencer, j'ai déplacé ce sujet dans le salon ad hoc.

Ensuite, je ne comprends pas ce que sont censées montrer les chaines de caractères que tu postes dans tes deux messages. Si tu postes des caractères hors-ISO-8859-1 sur ce forum, forcément, ça ne passe pas. Sur un forum en UTF-8, ça serait déjà plus probant.

Le problème, c'est que tu as des données qui ne sont pas en UTF-8 dans ta base, car résultat de scraping ou insertions diverses de données dans divers encodages? Et donc tu as cherché un moyen de déterminer quel est l'encodage réel d'une chaine de caractères (ou plutôt: d'une série d'octets), afin de pouvoir réaliser des conversions?

Mguesser a l'air intéressant. Smiley smile
Je crois que tu as super bien réussi à résumer mon problème...

J'ai en effet des suites de caractères qui ont été récupérées dans divers encodages et insérés dans une BDD MySQL en UTF8...

Du coups, il y a les erreurs que l'on peux constater.

Après conversion, il s'agit en effet de chaines en UTF8 avec des caractères de la table ASCII étendue (au delà de LATIN-2)... Il est donc normal que rien n'aille plus sur ce forum concernant l'affichage...

Juste un "hola" concernant Mguesser... il ne semble pas capable de deviner correctement les charsets des chaînes qui ne s'affichent pas du tout juste.