c# - Chargement de xml avec encodage UTF 16 en utilisant XDocument




winforms visual-studio-2008 (2)

Ce code:

System.IO.File.ReadAllLines(path)

retourne un tableau de chaînes. Le code correct est:

System.IO.File.ReadAllText(path)

J'essaye de lire le document XML en utilisant la méthode XDocument. mais je reçois une erreur quand xml a

<?xml version="1.0" encoding="utf-16"?>

Quand j'ai enlevé l'encodage manuellement. Cela fonctionne parfaitement.

Je reçois une erreur " Il n'y a pas de marque de commande d'octet Unicode. Impossible de passer à Unicode. "

J'ai essayé de chercher et j'ai atterri ici ->

Pourquoi C # XmlDocument.LoadXml (chaîne) échoue-t-il lorsqu'un en-tête XML est inclus?

Mais je n'ai pas pu résoudre mon problème.

Mon code:

XDocument xdoc = XDocument.Load(path);

Aucune suggestion ??

Je vous remercie.


Il semble que le fichier que vous essayez de lire ne soit pas encodé en Unicode. Vous pouvez répliquer le comportement en essayant d'ouvrir un fichier codé en ANSI avec le codage dans le fichier XML spécifié en tant que utf-16 .

Si vous ne pouvez pas vous assurer que le fichier est codé correctement, vous pouvez lire le fichier dans un flux (en laissant StreamReader détecter l'encodage), puis créer le XDocument :

using (StreamReader sr = new StreamReader(path, true))
{
    XDocument xdoc = XDocument.Load(sr);
}




unicode