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