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

SQL Procédural MySQL Discussion :

[MySQL] [XML] problème caractères accentués


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut [MySQL] [XML] problème caractères accentués
    Bonjour,
    Sur une installation toute fraîche, Apache2 PHP5 et MySQL5 je n'arrive pas à faire fonctionner les fonctions xml_parse ni simplexml_load_string.
    Mon but est de migrer un CMS qui fonctionnait correctement sur un ancien serveur mais qui plante lamentablement sur cette nouvelle machine.
    Je trouve beaucoup d'exemples d'utilisation du parser avec des fichiers externes, mais pas grand chose avec une base de données.
    Le jeu de caractères pour MySQL est UTF-8 Unicode (utf8).
    Je crée une nouvelle base avec interclassement utf8_general_ci
    Je crée une table avec un seul champ de type "longtext" et interclassement utf8_general_ci
    J'insère un enregistrement, et je tape <TEXTE>Des caractères accentués...</TEXTE>
    Ensuite, en dehors des mysql_connect et mysql_select_db, j'ai dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function fonctionTexte($parseur, $texte) {
      echo $texte."<br/>";
    }
    $parseurXML = xml_parser_create();
    xml_set_character_data_handler($parseurXML, "fonctionTexte");
    $result = mysql_query ("SELECT contenu FROM xml WHERE 1 LIMIT 1 ");
    $ligne = mysql_fetch_array($result);
    print_r($ligne);
    xml_parse($parseurXML,(utf8_decode($ligne[0])));
      echo "Erreur XML : ".xml_error_string(xml_get_error_code($parseurXML))."\n";
    xml_parser_free($parseurXML);
    $xml = simplexml_load_string((utf8_decode($ligne[0])));
    print_r($xml);
    Ce qui me donne comme résultat :
    Array
    (
    [0] => Des caractères accentués...
    [contenu] => Des caractères accentués...
    )
    Des caract?s accentu?..
    Erreur XML : No error
    Des caract?s accentu?..
    SimpleXMLElement Object
    (
    [0] => Des caract?s accentu?..
    )
    J'ai essayé diverses combinaisons, mais visiblement pas la bonne.
    J'espère que quelqu'un aura un exemple à me montrer...
    Merci d'avance !
    Mathieu

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Il y a une question un peu similaire dans un topic un peu plus bas.

    Il est dit d'aller voir du côté de utf8_decode().

    Bonne journée.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    Oui, j'ai vu cette autre discussion, qui ressemble à beaucoup d'autres que j'ai trouvé par google. Mais j'ai bien un utf8_decode à l'appel du parser.

    Si j'enlève le décodage utf8 j'ai cet affichage :

    Array
    (
    [0] => Des caractères accentués...
    [contenu] => Des caractères accentués...
    )
    Des caract
    Erreur XML : Invalid character
    Donc xml_parse commence le boulot mais se bloque dès le premier caractère accentué, et simpleXML n'affiche plus rien du tout...

    J'ai même lu sur un forum un message de quelqu'un qui disait être parvenu au graal en enchaînant deux utf8_decode ! Bigre, j'ai testé :

    Array
    (
    [0] => Des caractères accentués...
    [contenu] => Des caractères accentués...
    )
    Des caract?s accentu?..
    Erreur XML : No error
    Des caract?s accentu?..
    SimpleXMLElement Object
    (
    [0] => Des caract?s accentu?..
    )
    soit donc la même chose qu'avec un seul decode...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Si tu met ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-1"?>
    en haut de ta page, cela est mieux ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    non, ça me dit ça :

    Array
    (
    [0] => Des caractères accentués...
    [contenu] => Des caractères accentués...
    )
    Des caract?s accentu?..
    Erreur XML : No error
    Des caract?s accentu?..
    SimpleXMLElement Object
    (
    [0] => Des caract?s accentu?..
    )
    j'ai aussi essayé auparavant avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="utf-8"?>

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    Hier j'ai vu que dans le httpd.conf il y avait un
    AddDefaultCharset UTF-8
    Je l'ai fait mettre en commentaire depuis.

    J'ai aussi essayé un truc lu dans la doc mysql, avant ma requête select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $result = mysql_query("SET NAMES utf8_general_ci");
    $result = mysql_query("SET CHARACTER_SET utf8_general_ci");
    $result = mysql_query("SET character_set_results utf8_general_ci");
    ou, vice-versa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $result = mysql_query("SET NAMES latin1_swedish_ci");
    $result = mysql_query("SET CHARACTER_SET latin1_swedish_ci");
    $result = mysql_query("SET character_set_results latin1_swedish_ci");
    En fait je cherche un how-to ou un script d'exemple, sur la même configuration, mais pour l'instant je n'ai pas trouvé...

Discussions similaires

  1. [XML] Problème caractère spéciaux !
    Par blanchonvincent dans le forum Flash
    Réponses: 0
    Dernier message: 14/03/2008, 14h06
  2. [VB.NET] Fichier XML et caractères accentués = PROBLEME !
    Par andlio dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 18/02/2008, 09h39
  3. Réponses: 2
    Dernier message: 23/03/2007, 09h41
  4. [PHP][XSLT] problème caractères accentués
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 29/05/2006, 09h29
  5. [Struts] problème caractères accentués
    Par n00noors dans le forum Struts 1
    Réponses: 6
    Dernier message: 10/03/2006, 12h34

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