I have a simple XmlReader:
XmlReader r = XmlReader.Create(fileName); while (r.Read()) { Console.WriteLine(r.Value); }
The problem is, the Xml file has ISO-8859-9
characters in it, which makes XmlReader throw "Invalid character in the given encoding.
" exception. I can solve this problem with adding <?xml version="1.0" encoding="ISO-8859-9" ?>
line in the beginning but I'd like to solve this in another way in case I can't modify the source file. How can I change the encoding of XmlReader?
To force .NET to read the file in as ISO-8859-9, just use one of the many XmlReader.Create overloads, e.g.
using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding("ISO-8859-9")))) { while(r.Read()) { Console.WriteLine(r.Value); } }
However, that may not work because, IIRC, the W3C XML standard says something about when the XML declaration line has been read, a compliant parser should immediately switch to the encoding specified in the XML declaration regardless of what encoding it was using before. In your case, if the XML file has no XML declaration, the encoding will be UTF-8 and it will still fail. I may be talking nonsense here so try it and see. :-)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With