问题如标题所述,使用formattedXml.ToCharArray()[0]代码,显示出来的字符串是65279,经google,发现这个是UTF-8编码所识别的一个字符,但通常是不需要的,而且多了它,输出的文本就多一个问号。
查到的解决办法如下,在指定UTF8Encoding时,设置不需要BOM字符:
=========================================================
1 var serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
2 Encoding utf8EncodingWithNoByteOrderMark = new UTF8Encoding(false);
3 XmlTextWriter xtw = new XmlTextWriter(stream, utf8EncodingWithNoByteOrderMark);
4 serializer.Serialize(xtw, response);
5
6 string xml = Encoding.UTF8.GetString(stream.ToArray());
3 XmlTextWriter xtw = new XmlTextWriter(stream, utf8EncodingWithNoByteOrderMark);
4 serializer.Serialize(xtw, response);
5
6 string xml = Encoding.UTF8.GetString(stream.ToArray());