Bonjour,
je suis confronté à un problème d'encodage des plus étranges et j'espère que vous pourrez m'aider à y voir plus clair.
J'ai une application qui reçoit un fichier Xml à traiter. Ce fichier Xml est généré par une application tierce, et le fichier est au format ISO-8259-1. Pour traiter ce fichier je dois avant tout le réencoder en UTF-8. J'ai fait ca au plus simple car après tout, je ne pensais pas avoir de surprises
Une fois réencodé, je passe ce fichier dans une moulinette qui utilise une API que l'on m'a fourni pour réaliser une signature électronique. Et c'est là que le problème se présente, j'ai en effet une erreur car l'API me dit que le fichier n'est pas au format UTF-8. L'erreur survient sur les caractères accentués, lorsque je consulte les fichiers de log de l'API.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String content = File.ReadAllText(monFichier, Encoding.Default); File.WriteAllText(monFichier, content, Encoding.UTF8);
J'ai alors testé une chose. J'ai mis de côté le fichier réencodé avec l'application. J'ai ouvert le fichier original (celui en ISO-8259-1 donc) avec PSPad, un petit éditeur de texte gratuit, et j'ai converti le fichier en UTF-8 à partir de là. En comparant, en héxadécimal, les deux fichiers UTF-8 j'ai constaté une différence. Le fichier UTF-8 généré en .Net possède 3 octets supplémentaires en début de fichier. De plus, le fichier converti avec PSPad est traité sans aucun problème par l'API.
Je ne comprends pas qu'il y ai une différence, car les pages de codes sont bien définies il me semble. Je devrais donc avoir le même résultat, et pourtant non.
Quelqu'un a-t-il eu à faire à ce type de mésaventure ?
Partager