C # Problem z odczytywaniem XML z znakami różnych kodowań

Miałem problem z odczytaniem XML. Rozwiązanie zostało znalezione, ale wciąż są pewne pytania. Niepoprawny plik XML jest zakodowany w UTF-8 i ma odpowiedni znak w nagłówku. Ale zawiera również znak kodowany w UTF-16 - „é”. Ten kod został użyty do odczytu pliku XML w celu sprawdzenia jego zawartości:

var xDoc = XDocument.Load(taxFile);

Wywołuje wyjątek dla określonego niepoprawnego pliku XML: „Niepoprawny znak w podanym kodowaniu. Linia 59, pozycja 104.” Szybka poprawka wygląda następująco:

XDocument xDoc = null;
using (var oReader = new StreamReader(taxFile, Encoding.UTF8))
{
    xDoc = XDocument.Load(oReader);
}

Ten kod nie powoduje wyjątku dla niepoprawnego pliku. Ale znak „é” jest ładowany jako . Moje pierwsze pytanie brzmi „dlaczego to działa?”.

Inna kwestia przy użyciu XmlReader nie powoduje wyjątku, dopóki węzeł z „é” nie zostanie załadowany.

XmlReader xmlTax = XmlReader.Create(filePath);

I znowu pomaga trening z StreamReaderem. To samo pytanie. Wygląda na to, że rozwiązanie naprawcze nie jest wystarczająco dobre, bo pewnego dnia :) Może pojawić się kod XML zapisany w innym formacie i może być wykonany w niewłaściwy sposób. ALE Próbowałem przetworzyć plik XML w formacie UTF-16 i działał on dobrze (skonfigurowany na UTF-8).

Ostatnie pytanie brzmi, czy istnieją jakieś opcje dla XDocument / XmlReader, aby ignorować kodowanie znaków lub coś takiego.

Czekamy na twoje odpowiedzi. Z góry dziękuję

questionAnswers(1)

yourAnswerToTheQuestion