développiez une personne de réponse autre a donné:
Il y a deux possibilités:
- Le fichier est vraiment codé comme
UTF-8
, mais est interprété par votre analyseur XML comme ISO-8859-1
.
- Le fichier est réellement codé
ISO-8859-1
mais est interprété par votre analyseur XML comme UTF-8
.
Pour déterminer lequel est qui, regardez ce qui se passe avec le é
dans Sébastien
. Il y a deux possibilités que je peux imaginer:
- «
é
» devient deux personnages différents - probablement « é
»
- «
é
» devient un carac simple non-sens ou « ?
», et peut-être le « b
» est également manquant au nom Sébastien
.
Dans le premier cas, votre fichier n'est pas ce que vous pensez qu'il est. (Il arrive à votre programme en tant que données UTF-8
, mais votre programme essaie de l'interpréter comme ISO-8859-1
) Regardez le fichier xml avec un éditeur hexadécimal ou autre chose qui peut vous montrer quels sont les octets sur le disque.
Dans le second cas, je vérifierais comment le serveur HTTP sur localhost sert ce fichier. (Votre programme devient octets en format ISO-8859-1
, mais les interprète comme UTF-8
) La meilleure façon de le faire sur les fenêtres est d'ouvrir une invite cmd
et exécutez la commande: telnet localhost 80
Quand cela ouvre une fenêtre, tapez la ligne suivante (ou copier-coller depuis stackoverflow) et appuyez deux fois sur Entrée. Attention: Vous ne serez pas en mesure de voir ce que vous tapez, et la capitalisation est importante.
GET /Test/person.xml HTTP/1.0
Dans la réponse, recherchez une ligne commençant par Content-Type
. Cela vous indiquera comment le serveur web local sert le fichier.
Mise à jour: Après avoir examiné votre dossier, il est vraiment iso-8859-1, donc ce que je suggère est définissant l'attribut .Encoding de votre Webclient
par exemple comme si avant de dire à télécharger le fichier:
client.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1")
Sinon, vous pouvez utiliser les méthodes DownloadBytes
au lieu des méthodes DownloadString
, puis analyser les octets dans un fichier xml. Le problème est actuellement que lorsque l'analyseur xml obtient le contenu du fichier, les octets ont déjà été interprétés comme une chaîne, il est donc trop tard pour changer le codage.
Comment avez-vous obtenu le fichier XML dans le document? – lavinio
Pouvez-vous être plus précis sur les "personnages étranges" que vous voyez? Comment inspectez-vous les valeurs de vos variables au moment de l'exécution? –