Programmation » [PHP] output conversion failed
Catégorie:  
   
[PHP] output conversion failed
Publié le 02/06/2007 @ 12:08:06,
Par cauet
Voilà ce qu'on m'a rapporté sur serveur de prod cette nuit:

Warning: DOMDocument::saveXML() [function.DOMDocument-saveXML]: output conversion failed due to conv error, bytes 0xE7 0x61 0x20 0x6D in /home/smsaction/sms/outgoing/push_mt.php on line 29

Ce script fonctionne à merveille depuis longtemps.. c'est la première fois que cette erreur ce produit.
Quelqu'un peux m'en dire plus?


:cupra:

Merci!
   
[PHP] output conversion failed
Publié le 04/06/2007 @ 09:33:55,
Par ovh
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 11:14:59,
Par cauet
Bon apparemment, mon arbe XML étant constitué en ISO. Si je balance avant un utf8_decode ca merdoie.
Par contre sans ca marche et mes caractères passent en ISO..
Pas trop pigé sur ce coup :heink:
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 12:46:37,
Par philfr
Logique: en iso-8859, les caractères > 128 sont valides, en utf-8, s'il y a un byte >128, c'est le premier d'un caratère multibyte.

Donc ta conversion foire si tu as des accents ou autres caractères spéciaux.
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 12:51:08,
Par cauet
Et en concrètement? :neowen:
utf8_decode qui est foireux alors? j'ai des doutes là :oh:
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 12:54:49,
Par philfr
Si ton fichier est encodé en ISO-8859, tu ne dois pas le décoder comme de l'UTF-8.
Ton utf8_decode fonctionne sûrement très bien si tu lui donnes de l'utf-8 en entrée...
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 13:12:59,
Par cauet
en fait, il aurait fallut une fonction is_utf8() alors.. je met cette fonction car des fois elle est appelée avec de l'ISO, des fois en UTF.. va donc savoir :ohwell:
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 13:20:29,
Par zion
un texte en UTF commence en général par un délimiteur (me demande plus lequel, sauve avec le notepad puis éditeur hexa).

Par contre je me souviens avoir vu un jour un code assez bourrin qui est pas si con, c'est un truc du genre

  1. $texte = "plop"
  2. $texte_decode = utf8_decode($texte); 
  3. if ($texte_decode != ""
  4.   $texte = $texte_decode;


pourquoi?
Parce que si c'est pas de l'UTF et que tu le décodes, il sera vide, sinon dans le pire des cas t'as rien perdu :grin:

Dernière édition: 05/06/2007 @ 13:21:00
Je suis le Roy :ocube:
   
[PHP] output conversion failed
Publié le 05/06/2007 @ 17:49:14,
Par philfr
Parce que si c'est pas de l'UTF et que tu le décodes, il sera vide


Sauf si c'est de l'utf-8 valide sans être vraiment de l'utf-8.

Le string ISO8859-1 valide "é" est la séquence de bytes "\xc3\xa9"
Qui est aussi la représentation utf-8 du caractère "é".

Il n'y a pas de façon sûre de déterminer l'encodage d'une chaîne de caractères. Parfois pour l'utf-8 certains fichiers commencent en effet par une séquence "magique", mais c'est pas obligé :spamafote:
Et ce n'est de toutes façons jamais vrai pour les encodages ISO qu'on ne peut donc pas distinguer.
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?