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-2026 Akretio SRL  - Generated via Kelare Haut de page