C # Problema al leer XML con caracteres de diferentes codificaciones en él

Me enfrenté a un problema con la lectura del XML. Se encontró la solución, pero aún quedan algunas preguntas. El archivo XML incorrecto está codificado en UTF-8 y tiene la marca correspondiente en su encabezado. Pero también incluye un char codificado en UTF-16 - 'é'. Este código se usó para leer el archivo XML para validar su contenido:

var xDoc = XDocument.Load(taxFile);

Produce una excepción para el archivo XML incorrecto especificado: "Carácter no válido en la codificación dada. Línea 59, posición 104." La solución rápida es la siguiente:

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

Este código no genera excepciones para el archivo incorrecto. Pero el carácter 'é' se carga como . Mi primera pregunta es "¿por qué funciona?".

Otro punto es que utilizar XmlReader no genera excepciones hasta que se carga el nodo con 'é'.

XmlReader xmlTax = XmlReader.Create(filePath);

Y otra vez el entrenamiento con StreamReader ayuda. La misma pregunta. Parece que la solución de la solución no es lo suficientemente buena, porque un día :) El código XML en otro formato puede aparecer y podría proceder de la manera incorrecta. PERO he intentado procesar un archivo XML con formato UTF-16 y funcionó bien (configurado para UTF-8).

La pregunta final es si hay opciones para XDocument / XmlReader para ignorar la codificación de caracteres o algo así.

Esperamos sus respuestas. Gracias por adelantado

Respuestas a la pregunta(1)

Su respuesta a la pregunta