Bonjour,
Notre application travail avec des fichiers xml, et recemment on a trouver que 20 d'entre eux ne s'affichait pas correctement dans IE ou Firefox a cause d'un mauvais format d'encodage, apparu a cause de l'apparition du symbole £ dans le fichier xml.

Dans le header du fichier xml, on specifie clairement UTF-8, mais apres quelques recherches j'ai cru comprendre que cela ne signifie que le format ou le document doit etre encoder, on peut tres bien ecrire UTF-8 mais avoir un document encoder d'une autre facon.

Donc je dois trouver dans notre code le moment ou le fichier xml s'encode de la mauvaise facon, je suis partit a la source, et il s'agit de code c++ comminuquant avec notre application via JNI (Arretez moi si je dis des beties ) , le code C++ va chercher le xml dans une base de donnees et l'envoi a notre application java.

J'ai donc juste modifier le code C++ pour qu'il ecrive dans un fichier log le code qu'il nous envoi pour voir si le xml qu'on recoit est au depart au bon format, et il semblerait que oui, car il y a un charactere special avant le £ :


E, 45
C, 43
Â, ffffffc2
£, ffffffa3
5, 35
0, 30

Ce code nous envoi la string grace a la methode NewStringUTF d' un objet de type JNIEnv.

Neanmoins, dans java, lorsque l'on recuperer cette String,je fais directement un println sur cette String, et le caractere speciale n'est plus la !

EC£50

Meme en mode debug et en regardant le tableau de la string je ne le vois pas.


Es-ce que je loupe quelque chose d'evident ? Je n'ai pas vraiment de grosses connaissances sur l'encodage de fichier, et je peux lire dans la doc de String qu'il utilise UTF-16 si je comprends bien ?
> A String represents a string in the UTF-16 format in which supplementary characters are represented by surrogate pairs (see the section Unicode Character Representations in the Character class for more information).

On a vraiment besoin d'ecrire le XML encode en UTF-8, savez vous comment s'y prendre ? Merci !