Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 15h01   #1
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
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 :
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 :
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.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h06   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
tu crées des XML vide ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h21   #3
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
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 :
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 ?
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h34   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
pour créer des noeud utilise createElement, verifie que tes donnée soit bien en utf-8
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h46   #5
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
En fait dans ma fonction add_news_node
j'utilise CreateElement.

Voilà la fonction :
Code :
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 :
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.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h52   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Envoyé par Pierrick81
Est-ce que si je remplace l'appel de ma fonction par cela ça devrait fonctionner :
Code :
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h05   #7
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
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.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h09   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
pourquoi elles sont en iso d’où viennent les données ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h15   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Envoyé par stealth35
pourquoi elles sont en iso d’où viennent les données ?
Code :
$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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h22   #10
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
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.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h23   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 16h29   #12
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Qu'entends-tu par mettre l'utf_8 dans ma base ?
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h31   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h43   #14
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
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 ?
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h44   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h20   #16
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Cool ! Je ne connaissais pas du tout.

Merci beaucoup.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h57.


 
 
 
 
Partenaires

Hébergement Web