Bonjour à tous,
La migration d'une de mes applications en WD15 s'est passé pour la plupart sans encombre, sauf pour une petite partie qui, mine de rien, met un peu tout en l'air.
En effet, dans cette appli, je vais lire des lignes de script, qu'il faut envoyer à une autre application via une API, dans un fichier XML. Ce fichier XML contient quelques caractères pas très communs, dont le caractère ‡ (caractère très utilisé dans l'application à qui j'envoie les lignes de script, affichable avec la combinaison Alt+0135).
Voici une petite partie de mon fichier XML :
Le fichier est encodé en UTF-8 afin d'éviter des problèmes de lecture.. A la base..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <section nom="formalites"> <ligne num="1"> ************************************************************</ligne> <ligne option="1" num="2"> MERCI DE VERIFIER LES CONDITIONS ET LES FORMALITES DE POLICE </ligne> <ligne option="1" num="3"> ET DE SANTE EN VIGUEUR A LA DATE D ENTREE DANS LE PAYS</ligne> <ligne option="1" num="4"> DE DESTINATION OU DE TRANSIT.</ligne> <ligne num="5"> ************************************************************</ligne> </section>
Le fichier est parfaitement lisible dans n'importe quel éditeur XML (nous utilisons Oxygen et XMLSpy, ça passe aussi nickel dans Notepad++ et tous ces softs me confirment que l'encodage du fichier est correct).
Ce fichier XML est chargé avec le code suivant :
Le code est vraiment très basique et fonctionnait très bien sous Windev 14. Par contre, sous Windev 15, le XMLDocument ne passe pas, avec comme erreur "Le document n'est pas au format XML".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XMLTermine(sDocXml) sXml = UTF8VersChaîne(fChargeTexte(gsRepExe + "\data\scripts.xml")) SI PAS XMLDocument(sDocXml, sXml) ALORS Info("Impossible de charger les textes des scripts.", "Vérifiez que le fichier ""scripts.xml"" est bien présent dans le répertoire DATA de l'application.") RENVOYER Faux FIN
Pourtant, si je trace le contenu de ma variable sXml, tout à l'air correct : le caractère ‡ apparaît correctement, et si je fais un copié/collé du résultat dans un éditeur, pas de souci (alors qu'en cas de problème d'encodage, il m'envoie paître comme un malpropre).
Donc je me posais les questions suivantes : Ont-ils changé la gestion de l'UTF-8 dans WD15 au point qu'il soit incapable de lire correctement un fichier ?
A noter que nous créons également des webservices sous WD, et que nous avons également eu des problèmes d'UTF-8 que nous n'avions pas avec la version 14 (même erreur : "Le document n'est pas au format XML")
Pour info, j'ai testé mon bout de code en enlevant l'UTF8VersChaine, afin de vérifier si il ne faisait pas un décodage automatique du fichier maintenant avec le XMLDocument : le XMLDocument fonctionne, mais le décodage n'est pas correct et donc, les formats envoyés à l'API de l'application externe ne sont pas bons...
Voilà, si vous avez des réponses, une solution, je suis preneur !
Merci d'avance !
Partager