IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Remplacer les accents de LATIN1 dans un UTF8 ?


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Remplacer les accents de LATIN1 dans un UTF8 ?
    Bonjour à tous,

    J'ai lu pas mal de sujet mais étant un peu nouveau dans ce domaine, je vous explique mon problème:

    J'ai exporté ma base de donnée SQL qui était en Latin1.
    Quand j'importe cette base sur le nouveau serveur, tous les accents sont codés comme par exemple le "é" est devenu "é" .

    Ma nouvelle base est en UTF8.

    J'ai récupéré le code de ces caractères en décimal en suivant ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -- config théorique :
    SHOW VARIABLES LIKE '%char%';
     
    -- détection de la config réelle :
    SELECT _utf8'é', _latin1'é', ORD(_utf8'é'), ORD(_latin1'é') ;
    et j'obtiens bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    é é ORD(_utf8'é') ORD(_latin1'é')
    é é 50089 195
    Je souhaiterai maintenant remplacer ces caractères par les bon.
    Alors j'ai essayé avec un script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Selectionne uniquement les posts pour modifier chaque ligne.
    $logold = 'SELECT post_text FROM phpbb3_posts WHERE post_text !=""';
    $resold=mysql_query($logold,$link) or die("Impossible de lire les informations");
    while ($colo=mysql_fetch_array($resold))  // debut du while dans old base
    {
    //Récupère les valeurs des posts.
    $text = $colo["post_text"];
    $text = str_replace ('é©', 'é', $text);
    echo $text;
    echo '<br>';
    }
    ...mais ça ne fonctionne pas bien entendu..il ne trouve pas ces caractères .

    Pouvez vous s'il vous plait m'indiquer la marche à suivre ? (Sachant que je ne peux plus revenir en arrière)

    J'avoue, je suis assez embêté .

    Je vous remercie d'avance pour votre aide .

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    La première chose, c'est de déterminer si c'est un problème d'affichage ou si tes données sont vraiment endommagées.

    Supposons que tu aies un post, avec une post_id = 6, donc le texte commence par "L'élévation d'esprit...", qui doit donc apparaître comme "L'élévation d'esprit...". Il faut tester le troisième caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ORD(SUBSTR(post_text, 3, 1)) 
    FROM phpbb3_posts 
    WHERE post_id = 6 ;
    Si tu obtiens 50089, c'est un é en utf8, donc c'est que tes données sont bonnes dans la base mais mal affichées. Si tu obtiens 50051, c'est vraiment un à utf8, donc tes données sont mauvaises...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] Remplacer les accents dans plusieurs noms de fichiers
    Par lyko94 dans le forum Général Python
    Réponses: 13
    Dernier message: 04/07/2014, 09h58
  2. Réponses: 8
    Dernier message: 10/03/2010, 15h51
  3. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  4. comment remplacer les accents mysql
    Par silvain dans le forum Outils
    Réponses: 13
    Dernier message: 22/02/2007, 12h09
  5. Remplacer les accents dans une chaîne
    Par mathieumg dans le forum C
    Réponses: 9
    Dernier message: 23/07/2006, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo