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

Langage PHP Discussion :

Erreur : DOMDocument::save(): string is not in UTF-8


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut Erreur : DOMDocument::save(): string is not in UTF-8
    Bonjour à tous,

    J'ai une erreur sur une ligne de mon code, que je n'arrive pas à éliminer.
    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $xml_file = new DOMDocument("1.0");
    $xml_file->save((dirname(__FILE__)."/rss/flux-".$ville.".xml"));
    Et bien que cela fonctionne, j'ai le Warning suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DOMDocument::save(): string is not in UTF-8
    Comment faut-il que je fasse ? Il faut que j'ajoute des "\" ?

    Merci de votre aide ?

    P.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu crées des XML vide ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Non j'ai sauté le code où je remplis le fichier car il ne me semblait pas que c'était utile.

    Voilà le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $xml_file = new DOMDocument("1.0");
    // on initialise le fichier XML pour le flux RSS
    $channel = init_news_rss($xml_file);
     
    foreach($news as $valeur)
    {
    $url=$urlsite."deal-".$ville."-".$valeur["id_deal"]."-".$valeur["id_categorie"]."#utm-medium=rss";
    $description='<img src="'.$valeur["image"].'"> '.$valeur["description"];
    add_news_node($xml_file, $channel, $valeur["titre"], $description, $valeur["image"], $url, $valeur["date_creation_deal"]);
    }
    // on écrit le fichier
    $xml_file->save((dirname(__FILE__)."/rss/flux-".$ville.".xml"));
    ah mes en fait je crois que je comprends mieux le message d'erreur au vu de ta question, la question n'est pas sur le nom du fichier, mais sur le contenu ?
    Il faudrait que je convertisse le contenu au bon format ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pour créer des noeud utilise createElement, verifie que tes donnée soit bien en utf-8

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    En fait dans ma fonction add_news_node
    j'utilise CreateElement.

    Voilà la fonction :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function add_news_node(&$parent, $root, $titre, $description, $img, $url, $date_creation)
    {
            $item = $parent->createElement("item");
            $item = $root->appendChild($item);
     
            $title = $parent->createElement("title");
            $title = $item->appendChild($title);
            $text_title = $parent->createTextNode($titre);
            $text_title = $title->appendChild($text_title);
     
            $desc = $parent->createElement("description");
            $desc = $item->appendChild($desc);
            $text_desc = $parent->createTextNode($description);
            $text_desc = $desc->appendChild($text_desc);
     
            $image= $parent->createElement("image");
            $image = $item->appendChild($image);
            $text_image = $parent->createTextNode($img);
            $text_image = $image->appendChild($text_image);
     
            $link = $parent->createElement("link");
            $link = $item->appendChild($link);
            $text_link = $parent->createTextNode($url);
            $text_link = $link->appendChild($text_link);
     
    		$pubDate = $parent->createElement("pubDate");
            $pubDate = $item->appendChild($pubDate);
            $text_pubDate = $parent->createTextNode($date_creation);
            $text_pubDate = $pubDate->appendChild($text_pubDate);
    }
    Est-ce que si je remplace l'appel de ma fonction par cela ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add_news_node($xml_file, $channel, utf8_encode($valeur["titre"]), utf8_encode($description), utf8_encode($valeur["image"]), utf8_encode($url), $valeur["date_creation_deal"]);
    Je vais tester. Je vous dirai.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Pierrick81
    Est-ce que si je remplace l'appel de ma fonction par cela ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add_news_node($xml_file, $channel, utf8_encode($valeur["titre"]), utf8_encode($description), utf8_encode($valeur["image"]), utf8_encode($url), $valeur["date_creation_deal"]);
    Je vais tester. Je vous dirai.
    Uniquement si les valeurs sont en iso-8859-1...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Oui j'ai vu cette condition pour cette fonction encode_utf8.

    En tout cas ça marche !

    Donc c'est que ça devait être au format iso-8859-1

    Merci de votre aide.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi elles sont en iso d’où viennent les données ?

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par stealth35
    pourquoi elles sont en iso d’où viennent les données ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $channel = init_news_rss($xml_file);
    A priori de flux RSS. Ceci dit, s'il y en a plusieurs à intégrer, il faudra surement faire la vérification de l'encodage avant le traitement parce que le plus souvent, ils sont en UTF-8...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Les données que j'intègre sont des données de ma table SQL.
    Là en faisant comme je fais, je convertis en UTF-8 les données avant de créer le flux, donc normalement c'est ok.
    En tout cas je n'ai plus le message d'erreur.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    je te conseil de mettre de l'utf-8 aussi dans ta base de données t'auras plus de problème a l'avenir

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Qu'entends-tu par mettre l'utf_8 dans ma base ?

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Pierrick81 Voir le message
    Qu'entends-tu par mettre l'utf_8 dans ma base ?
    l'encodage (charset, collation) de tes tables, ainsi que la connexion

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    C'est l'élément interclassement dans PHPMyAdmin qui doit être à utf8_general_ci ?
    Par contre je ne comprends pas quand tu dis au niveau de la connexion.
    C'est dans ma fonction ou dans ma fonction ?

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Pierrick81 Voir le message
    C'est l'élément interclassement dans PHPMyAdmin qui doit être à utf8_general_ci ?
    oui

    Citation Envoyé par Pierrick81 Voir le message
    Par contre je ne comprends pas quand tu dis au niveau de la connexion.
    C'est dans ma fonction ou dans ma fonction ?
    avec mysql_set_charset

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Cool ! Je ne connaissais pas du tout.

    Merci beaucoup.

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

Discussions similaires

  1. [XML] Erreur bloquante : string is not in UTF-8
    Par Mikkle dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/02/2010, 14h54
  2. Erreur String was not recognized as a valid DateTime.
    Par andre99 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/01/2009, 20h34
  3. Erreur compilation avec <string>
    Par seal3 dans le forum SL & STL
    Réponses: 9
    Dernier message: 25/08/2005, 20h41
  4. [C#] Erreur comparaison de string
    Par Damsou dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/02/2005, 11h14
  5. Réponses: 3
    Dernier message: 30/09/2004, 20h16

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