[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base?

WRInaute occasionnel
Bonjour,

Je suis en cours de migration de serveur. J'ai donc exporté / importé mes bases de données mysql d'un serveur à l'autre mais j'ai un soucis d'encodage avec le caractère "à". Tous les autres caractères accentués ne posent aucun problème mais ce fichu "à" vient me taquiner. Au lieu d'afficher "à", je me retrouve avec des "�". L'interclassement dans mes bases est en utf8_general_ci et le "à" est encodé en "Ã ".

M'est venu l'idée de remplacer tous les "Ã " par des "à". J'ai donc trouvé la formule suivante :
UPDATE table SET champs1=REPLACE(champs1,'Ã ','à'), champs2=REPLACE(champs2,'Ã ','à'), ...

Mais ca me faciliterait grandement la vie une formule me permettant de changer ce fichu "à" dans tous les champs de toutes les tables de ma base en une seule requête.

Si vous avez des pistes, je suis tout ouïe.

Par avance merci :)
 
WRInaute accro
dop20vt a dit:
M'est venu l'idée de remplacer tous les "Ã " par des "à". J'ai donc trouvé la formule suivante :
UPDATE table SET champs1=REPLACE(champs1,'Ã ','à'), champs2=REPLACE(champs2,'Ã ','à'), ...
TRES mauvaise idée. Il ne faut pas enregistrer des entités HTML dans la DB, SAUF si c'est rempli via un éditeur WYSIWYG (CKEditor, TinyMCE & co)

Tu as changé d'encodage en cours de route ?
Si par exemple tu es passé du Latin1 à UTF8:
Code:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;
 
WRInaute occasionnel
spout a dit:
TRES mauvaise idée. Il ne faut pas enregistrer des entités HTML dans la DB, SAUF si c'est rempli via un éditeur WYSIWYG (CKEditor, TinyMCE & co)

Tu as changé d'encodage en cours de route ?
Si par exemple tu es passé du Latin1 à UTF8:
Code:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

Je rempli ma base avec un éditeur maison donc j'enregistre le html. Mon site est en utf8 et ma base en utf8_general_ci sur les 2 serveurs.
 
WRInaute impliqué
une piste on y pense pas souvent mais la base information_schema contient une table columns, çà peut être un bon début pour un petit script genre procédure sql ou script php
 
WRInaute occasionnel
julienr a dit:
une piste on y pense pas souvent mais la base information_schema contient une table columns, çà peut être un bon début pour un petit script genre procédure sql ou script php

Pas bête en effet. J'espérais qu'une requête simple pourrait m'aider à vrai dire :p

Mais je ne comprends vraiment pas pourquoi ce "à" pose problème. Les tables sur mes 2 serveurs sont identiques ... c'est quand même étrange :oops:
 
WRInaute accro
sinon, le plus pratique reste le fait de changer l'encodage du fichier dump avant l'intégration dans la 2° BDD.
 
WRInaute occasionnel
Leonick a dit:
sinon, le plus pratique reste le fait de changer l'encodage du fichier dump avant l'intégration dans la 2° BDD.

bah en fait je fais exporter la table dans mysql, je copie le code sql retourné et je le colle dans l'onglet SQL de mysql et hop ... je me retrouve avec une table parfaitement identique coté encodage. Tous les autres caractères accentués passent impec à l'affichage sur mon site sauf ce foutu "à". Dans ma table "à" est encodé en "à ", "é" en "é", etc ... mais le "à" ne s'affiche pas correctement et donne "�" sous firefox, un carré sous ie ...
 
WRInaute accro
faut voir comment sont encodée les pages html import et export
plutôt que de faire du copier/coller, le mieux serait d'exporter dans un fichier et de tenter l'import. Tu choisis import en thf8, si ça n'est pas bon, essaie en iso, sinon ton fichier il faut le convertir
 
WRInaute occasionnel
Leonick a dit:
faut voir comment sont encodée les pages html import et export
plutôt que de faire du copier/coller, le mieux serait d'exporter dans un fichier et de tenter l'import. Tu choisis import en thf8, si ça n'est pas bon, essaie en iso, sinon ton fichier il faut le convertir


Toutes les pages sont en charset=utf8 dans phpmyadmin sur mes 2 serveurs. J'ai essayé en csv dans un fichier texte enregistré en utf8 ... même problème.

Même lorsque je fais "insérer" une nouvelle entrée dans ma table et que je mets "Ã " dans un de champs, il s'affiche mal sur mon site. Il s'affiche bien uniquement si j'insère une ligne dans ma table via un script php ... insert ... values(...,'à',...). Dans ce cas là le "à" apparait bien dans ma table sous la forme "Ã " et affiche bien "à" sur mon site. Le seul truc que je vois c'est que le caractère après le "Ã" doit être un espace spécial et non un espace banal :?:
 
Discussions similaires
Haut