Another huge gotcha: when outputting XML through a web page (ASP.NET), you don’t want to include the Unicode Byte-Order Mark. Of course, the ways to use or not use the BOM are almost the same:
BAD (includes BOM):
XmlTextWriter wr = new XmlTextWriter(stream, new System.Text.Encoding.UTF8);
GOOD:
XmlTextWriter wr = new XmlTextWriter(stream, new System.Text.UTF8Encoding(false))
You can explicitly pass false to indicate you don’t want the BOM. Notice the clear, obvious difference between Encoding.UTF8
and UTF8Encoding
.
The three extra BOM Bytes at the beginning are (0xEFBBBF) or (239 187 191).
Reference: http://chrislaco.com/blog/troubleshooting-common-problems-with-the-xmlserializer/