Bonjour,
Je suis face à un problème de taille.. et je compte sur vos avis.
J'ai un fichier xml encodé en utf8 sans BOM (en hexa il commence par 3c 3f 78 6d.... d'après mes recherches c'est un utf-8 sans BOM, sous notepad++ il est ANSI mais si je le converti en utf-8 sans BOM ça donne la même chose). Textuellement mon fichier xml ne contient pas d'encodage :
Mon but est de le transformer en ISO 8859-1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3<?xml version="1.0"?> .........
J'ai procédé comme suit:
1/ J'ai ajouté les 3 caractères de BOM utf8 au début de mon fichier.
2/ Une fois le BOM encodé au début de mon fichier xml j'ai procédé à la transformation en iso 8859-1...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 char* BufferEncoder = (char*)malloc(3); memset(BufferEncoder, 0, size); for(int i=0;i<3;i++) BufferEncoder[i] ^= 0xaa; BufferEncoder[0]=(char)0xef; BufferEncoder[1]=(char)0xbb; BufferEncoder[2]=(char)0xbf; /* Ajouter le BOM à mon xml sans son BOM d'origine.... etc */
Je n'ai pas encore testé mon code mais j'aimerai avoir quand même vos avis. Pensez-vous que la transformation de cette manière est correcte?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Création de pBuffer qui contient tout le fichier xml avec son BOM encodé en hexa (concaténation) int size = WideCharToMultiByte(28591 /*ISO-8859-1*/, 0, pBuffer, -1, NULL, 0, NULL, 0); if (size>0) { char* pBuffer2 = (char*)malloc(size); memset(pBuffer2, 0, size); WideCharToMultiByte(28591, 0,pBuffer,-1, pBuffer2, sizeNew, NULL, 0); /* Enregistrement du nouveau fichier xml encodé dans le buffer pBuffer2*/
Y' a-t-il d'autres solutions plus simples?
Merci d'avance!
Partager