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

WinDev Discussion :

Problème d'encodage d'un xml


Sujet :

WinDev

  1. #1
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut Problème d'encodage d'un xml
    Bonjour à toutes et à tous,
    j'ai un gros souci dans une de mes application, je tente d'identifier le problème depuis ce matin mais en vain!

    j'explique mon problème:
    à partir d'une application windev mobile [android], je génère un fichier xml : (dont la structure a été simplifiée qu'à titre d'exemple)
    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
     
    xmlClient est un xmlDocument
    sNomFichier est une chaîne;
    xmlUnNoeud est un xmlNoeud
     
    xmlUnNoeud..Nom = "Clients"
    Ajoute(xmlClient, xmlUnNoeud);
     
    sNomFichier="test.xml";
     
    c est une chaîne;
    c=SAI_nom;
    xmlClient.Clients.Nom=c;
    //Si j'affecte directement SAI_nom au noeud "Nom" j'obtient le message d'erreur :
    //un élément de type champ de saisie ne peut pas être converti vers le type xmlnoeud
     
    sDossier est une chaîne;
    sDossier=SAI_dossier;
    fRepCrée(SAI_dossier);
    XMLSauve(xmlClient,sDossier+"/"+sNomFichier);
    Le fichier xml généré ne contient qu'un seul noeud (Nom) que représente le nom d'un client par exemple.
    et voici un exemple de fichier généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Clients><Nom>reda</Nom></Clients>
    Le fichier est correct et est lu par la suite avec une autre application (application windev sous windows) sans problème

    le problème, c'est que si le noeud "nom" contient des caractères accentués ou certains symboles, le fichier xml généré sera corrompu et lorsque je tente de le lire à partir de l'autre application windev, j'obtient le joli message suivant :

    Ligne 141, Colonne 17 : Input is not proper UTF-8, indicate encoding !
    Bytes: 0x92 0x73 0x20 0x45


    cette erreur se produit lorsque je met par exemple "réda" dans le champs SAI_nom.

    cela me semble être un problème d'encodage, mais même si je convertie la chaine c à l'aide de la fonction ChaîneVersUTF8, le problème persiste!

    Bizarement, le problème apparait uniquement sous windev mobile (android).
    Sous windev, et même sous le simulateur android windev mobile, le fichier généré est correctement lu.

    Quelqu'un aurait un idée ?

    Bien à vous.

    Réda
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  2. #2
    Invité
    Invité(e)
    Par défaut
    je vois 2 solutions à ton problème, je ne sais pas si ça va vraiment répondre à ton problème :
    1) remplacer l'encodage UTF-8 par ISO-8859-1
    2) te créer une fonction d'encodage pour tes caractères spéciaux, pour ça, tu peux regarder cette doc : https://alexandre.alapetite.fr/doc-a...x_special.html

    Personnellement, j’opterais plutôt pour la 2eme solution, dans un ancien dev que j'avais fait, dans la doc que j'avais pour construire mes xml, il avait été demandé de remplacer d'encoder les caractères spéciaux.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Bonjour,

    Est-ce que l'utilisation de la balise CDATA ne pourrait pas répondre au problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <Clients><Nom><![CDATA[reda]]></Nom></Clients>

  4. #4
    Membre éprouvé Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour b_reda31,

    Ton fichier est il "réellement" encodé en utf8 ?
    l'indication <?xml version="1.0" encoding="UTF-8"?> n'est pas une preuve de l'encodage (je peux ecrire cela dans un fichier ansii sans pb).
    Un éditeur comme notepad++ te confirmera l'encodage.
    Christophe.

    Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/

  5. #5
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    As tu utilisé les fonctions ChaîneVersUTF8 et TexteVersXML ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TexteVersXML(ChaîneVersUTF8("ééééèèèèààààà"))
    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  6. #6
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonsoir,
    Merci à vous tous pour votre aide !

    Ton fichier est il "réellement" encodé en utf8 ?
    l'indication <?xml version="1.0" encoding="UTF-8"?> n'est pas une preuve de l'encodage (je peux ecrire cela dans un fichier ansii sans pb).
    Je pense que c'est justement là le problème. Je veux donc m'assurer que le contenu du xml est en utf8 pour cela je passe par la fonction ChaîneVersUTF8 mais pareil!

    As tu utilisé les fonctions ChaîneVersUTF8 et TexteVersXML ?
    oui, toujours le même problème, la lecture du fichier par la fonction xmlouvre provoque la même erreur!


    je vois 2 solutions à ton problème, je ne sais pas si ça va vraiment répondre à ton problème :
    1) remplacer l'encodage UTF-8 par ISO-8859-1
    2) te créer une fonction d'encodage pour tes caractères spéciaux, pour ça, tu peux regarder cette doc : https://alexandre.alapetite.fr/doc-a...x_special.html

    Personnellement, j’opterais plutôt pour la 2eme solution, dans un ancien dev que j'avais fait, dans la doc que j'avais pour construire mes xml, il avait été demandé de remplacer d'encoder les caractères spéciaux.
    Je pense aussi opter pour la 2ème solution, mais en plus simple ; à l'aide d'une petite procédure je vais tenter de faire un petit nettoyage des chaines de caractères avant de les insérer dans le xml


    Est-ce que l'utilisation de la balise CDATA ne pourrait pas répondre au problème ?
    Je ne connais pas cette balise. Comment puis-je l’intégrer?
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

Discussions similaires

  1. Problème d'encodage des fichiers xml dans SAX
    Par jad_jad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/05/2008, 19h51
  2. [XML] problème d'encodage caractère €
    Par #CR-7 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 11/01/2007, 10h45
  3. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum Flash
    Réponses: 20
    Dernier message: 11/10/2006, 21h16
  4. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 06/10/2006, 16h45
  5. [XML::PARSER] Problème d'encodage
    Par frangin2003 dans le forum Modules
    Réponses: 13
    Dernier message: 05/09/2005, 14h59

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