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

Bibliothèques et frameworks PHP Discussion :

[XML] [Encodage] Problème avec un quote !


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut [XML] [Encodage] Problème avec un quote !
    Bonjour a tous!!
    Je suis devant un problème qui me bloque depuis un moment..et honnetement je ne comprends pas!!
    J'ai un fichier xml que je dois parser, puis récupérer les infos, et je dois insérer ces infos dans une base de données...
    Le problème est que je me retrouve dans ma base de données avec des ? à la place de certains quotes ...(alors que les accents passent très bien).
    Certains quotes passent et d'autres non!
    J'ai fait un copier coller des titres qui ne passent pas et de ceux qui passent dans bloc note pour voir la différence...et en effet il y a une différence entre les guillemets!
    ceux qui passe s'affiche comme ça dans bloc note : '
    ceux qui ne passent pas s'affiche comme ça : ’ (ou comme une virgule mais en l'air, servant d'apostrophe)
    j'ai eu beau faire des str_replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
             echo str_replace("’","'",$title)."<br />";
             echo str_replace("&rsquo;","'",$title)."<br />";
    rien n'y fait!!
    je n'arrive pas à cibler ce caractère pour le mettre comme un quote normal!!
    Avez vous une petite idée du pourquoi du comment ??
    Je ne comprends plus rien la...
    Merci beaucoup a vous!!

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    As-tu essayer en remplacant ton caractère par son code html ?

    Je pense que c'est : &acute;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Merci de ta réponse...
    Je viens d'essayer mais ça ne marche pas non plus!

    J'ai fait aussi un autre test en récupérant la valeur ascii de l'apostrophe qui ne marchait pas...ça m'a retourné le caractère 63, et la j'ai cru que c'était bon que j'allais pouvoir faire mes remplacements...mais bon fausse joie car le caractère 63 correspond au caractère ?
    donc toujours au même point...je suis bien bloqué!!

  4. #4
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    essaye de qualifer ta variable $title en lui associant le bon encodage de caractere.

    utf8-encode()
    iconv()

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Points : 53
    Points
    53
    Par défaut
    bonjour
    essayer cette solution ça marche chez moi j'espère que ça vas marcher chez toi.
    d'abord l'entete du fichier xml doit etre comlmeç&
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?>
    puis aprè la lecture du fichier utilise la fonction
    exemple
    fichier xml(test.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <root>
    <famille nom="SmashingCoding">
    <membres>
      <membre nom="To’m" type="contributeur" />
      <membre nom="l'enfant Gérald" type="contributeur" />
      <membre nom="Nic'olas" type="contributeur" />
     </membres>
    </famille>
    </root>
    fichier php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
    $file = 'test.xml';
    # On initialise l'objet $xml
    $xml = simplexml_load_file($file);
    //$xml = utf8_decode($xml);
    //var_dump($xml);
     
    echo '<p>Liste des membres :</p><p>';
    foreach($xml->famille as $famille) {
     echo '<br /><br /><br />famille:'.utf8_decode($famille['nom']);
     foreach($famille->membres as $membres) {
      foreach($membres as $membre) {
        echo '<br />membre:'.utf8_decode($membre['nom']);
      }
     }
    }
    ?>
    </p>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Merci à vous deux pour les réponses
    J'ai essayé ça aussi, mais ça ne fonctionne pas...(de plus l'entete de mon fichier xml sera forcément <?xml version="1.0" encoding="UTF-8" ?>)

    par contre en faisant des recherche, j'ai trouvé que "les fichiers html édités par word étaient codés en windows-1252 qui est un sur-ensemble de l'ISO8859-1.En particulier, il est susceptible d'inclure des caractères non affichables sur toutes les plateformes. Ceci concerne notamment les caractères quote-droite et quote-gauche, ces caractères apparaissent comme des "?". "
    Donc il y a de forte chance que le xml que je parse ait été créé avec word et que donc il me trimballe des caractères non affichables!!!
    Bon j'avance un petit peu!!il ne me manque pluqu'a trouver comment ne pas avoir c'est caractères la dans mon fichier xml!!ca doit bien etre faisable!

  7. #7
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    !!! Words c'est mal !!!

    Essaye ceci, ca m'a autrefois fait gagner du temps.

    Copie/colle ton texte words dans le bloc note. Ensuite, tu re copie/colle le texte dans ton fichier xml, puis tu lance ton script de parse.

    Les problemes liés à l'encodage 'pourrie' de words devrait être résolu

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    c'est que que ça pourrait etre beau! ça ne tiendrait qu'a moi je n'aurais jamais fait du xml avec word!!
    Mais le problème est que le xml vient pas de chez moi mais de l'extérieur...bon il y a toujours la solution de leur dire "euh dites vous pouvez évitez d'utiliser Word??"
    Mais bon si je peux éviter...

  9. #9
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    j'ai eu ce probleme pour de l'integration de texte, c'etait pas du xml, et en gros je preferais faire la manip à la main que de coder un script.
    C'etait une tache non reguliere et qui me prenait peu de temps. Ce qui n'est pas ton cas.

    essaye d'utiliser la fonction iconv

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    pfffff...je n'y arrive pas non plus!! c'est quand même incroyable que je n'arrive pas à remplacer ce fichu caractere windows-1252 par un caractère classique!! ça doit quand même bien être possible!! Encore une belle trouvaille de microsoft cette surclasse de l'iso, windows-1252!!!
    Bon je continue mes recherches...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Bon j'ai trouvé un truc qui marche...c'est assez laid mais bon ça me dépanne en attendant de trouver mieux.
    Pour ceux que ça intéressent voila ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //je recupere le contenu du fichier xml a parser
    $contents = file_get_contents($pathtofile);
     
    //je le code en entités html
    $temp = htmlentities($contents);
    //je remplace le code qui de cette saleté d'apostrophe (& a c i r c ; € ™ => ce code est super bizarre d'ailleurs (sans les espaces)) par une apostrophe normale
    $temp2 = str_replace("& a c i r c ; € ™ ","'",$temp);
    //je redecode le contenu du fichier xml pour ne plus avoir les entités
    $contents = html_entity_decode($temp2);
     
    //je parse le contenu xml du fichier
    $result = xml2array($contents,1);
    J'espère trouver plus propre d'ici peu, mais bon ça a l'air de marcher...
    Un avis sur ce code?
    Merci.
    A+

Discussions similaires

  1. Transformation XML/XSLT: Problème avec le &
    Par bobic dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/01/2009, 17h16
  2. Réponses: 15
    Dernier message: 21/02/2007, 17h29
  3. [XML/XSL]problème avec for-each
    Par mavina dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/06/2006, 15h28
  4. [XML] [EXPAT] Problème avec Parseur XML
    Par tubeless dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/02/2006, 09h52
  5. [HTML][Encodage] Problèmes avec les accents...
    Par eraim dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/05/2004, 10h11

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