I'm trying to create a piece of xml. I've created the dataclasses with xsd.exe.
The root class is MESSAGE
.
So after creating a MESSAGE
and filling all its properties, I serialize it like this:
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
StringWriter sw = new StringWriter();
serializer.Serialize(sw, response);
string xml = sw.ToString();
Up until now all goes well, the string xml contains valid (UTF-16 encoded) xml. Now I like to create the xml with UTF-8 encoding instead, so I do it like this:
Edit: forgot to include the declaration of the stream
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
using (MemoryStream stream = new MemoryStream())
{
XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(xtw, response);
string xml = Encoding.UTF8.GetString(stream.ToArray());
}
And here comes the problem: Using this approach, the xml string is prepended with an invalid char (the infamous square).
When I inspect the char like this:
char c = xml[0];
I can see that c has a value of 65279.
Anybody has a clue where this is coming from?
I can easily solve this by cutting off the first char:
xml = xml.SubString(1);
But I'd rather know what's going on than blindly cutting of the first char.
Anybody can shed some light on this? Thanks!