Чтобы заставить .NET считывать файл как ISO-8859-9, просто используйте одну из многочисленных перегрузок XmlReader.Create, например,
using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding("ISO-8859-9")))) {
while(r.Read()) {
Console.WriteLine(r.Value);
}
}
Однако, это может не сработать, потому что, IIRC, стандарт W3C XML говорит о том, что когда строка объявления XML прочитана, совместимый синтаксический анализатор должен немедленно переключиться на кодировку, указанную в объявлении XML, независимо от того, какую кодировку он использовал. до. В вашем случае, если XML-файл не имеет XML-декларации, кодировка будет UTF-8 и все равно не удастся. Я могу говорить глупости здесь, так что попробуйте и посмотрите. : -)