8792 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis en train d'écrire une fonction PHP utilisant les méthodes du DOM pour générer un fichier XML correspondant à un fil RSS 1.0. Un court extrait :
$xml = new DOMDocument('1.0', 'iso-8859-1');
$creatorTxt = $xml->createTextNode('Mickaël');
$xml->save('rss.xml');
Je n'ai pas réussi à rentrer des caractères accentués pourtant valides en ISO-8859-1 (ë). J'obtiens l'erreur suivante :
a écrit :

Warning: DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xEB 0x6C 0x20 0x54
Savez-vous pourquoi ? Comment procéder ?

Merci.
Modifié par 84mickael (20 Sep 2006 - 13:26)
Salut,

le fichier "créateur" est-il encodé en ISO ?

Ou bien la source d'où est issu le texte accentué l'est-il ?
Sinon il faudra sûrement procéder à une conversion... enfin je ne suis pas trop trop sûr, mais regarde déjà à ce niveau
Tous les fichiers sont en ISO-8859-1 :
- le PHP contenant la fonction ;
- le PHP incluant et appelant la fonction ;
- le XML généré.

La chaîne concernée ("Mickaël"), je l'ai tapée directement dans le PHP contenant la fonction, pour tester.

Smiley decu
Dans la documentation PHP, quelqu'un a posté un commentaire (en anglais), donnant la solution :
a écrit :
The XML parser converts the text of an XML document into UTF-8, even if you have set the character encoding of the XML, for example as a second parameter of the DOMDocument constructor. After parsing the XML with the load() command all its texts have been converted to UTF-8.

In case you append text nodes with special characters (e. g. Umlaut) to your XML document you should therefore use utf8_encode() with your text to convert it into UTF-8 before you append the text to the document. Otherwise you will get an error message like "output conversion failed due to conv error" at the save() command.
L'extrait de code corrigé :
$xml = new DOMDocument('1.0', 'iso-8859-1');
$creatorTxt = $xml->createTextNode(utf8_encode('Mickaël'));
$xml->save('rss.xml');

Modifié par 84mickael (20 Sep 2006 - 13:25)
Mais à ce moment là, ton document généré est en UTF-8 Smiley ohwell

C'est ce que tu veux ? ça ne te pose pas de problème ?
Je suppose que la conversion vers l'ISO-8859-1 est faite ensuite puisque mon fichier XML résultat est identifié comme étant codé en ISO-8859-1 et non en UTF-8.
Modifié par 84mickael (20 Sep 2006 - 18:41)