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

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dop20vt, 11 Juillet 2013.

  1. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    458
    J'aime reçus:
    0
    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 :)
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 809
    J'aime reçus:
    242
    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;
     
  3. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    458
    J'aime reçus:
    0
    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.
     
  4. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    941
    J'aime reçus:
    0
    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
     
  5. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    458
    J'aime reçus:
    0
    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:
     
  6. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 417
    J'aime reçus:
    0
    sinon, le plus pratique reste le fait de changer l'encodage du fichier dump avant l'intégration dans la 2° BDD.
     
  7. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    458
    J'aime reçus:
    0
    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 ...
     
  8. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 417
    J'aime reçus:
    0
    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
     
  9. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    458
    J'aime reçus:
    0

    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 :?:
     
Chargement...
Similar Threads - [MYSQL] remplacer caractères Forum Date
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[MySQL] Liste (select) avec des lignes au hasard Développement d'un site Web ou d'une appli mobile 23 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MySQL] Nombre d'enregistrements sur des horaires précis Développement d'un site Web ou d'une appli mobile 19 Juillet 2013
[MYSQL] Une sorte de "OR JOIN" ? Développement d'un site Web ou d'une appli mobile 5 Juillet 2013
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[Mysql] Requête PDO avec variable php Développement d'un site Web ou d'une appli mobile 16 Février 2012
[Mysql] Requête PDO aléatoire Développement d'un site Web ou d'une appli mobile 7 Février 2012
[MYSQL] Tri par date Développement d'un site Web ou d'une appli mobile 7 Septembre 2011
[MySQL] rechercher une valeur dans un champ sérialisé Développement d'un site Web ou d'une appli mobile 10 Août 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice