以下是我设置xmlWriter和xmlWriterSettings的方法:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding.Equals("UTF-8");
settings.Indent = true;
settings.OmitXmlDeclaration = true;
settings.NewLineOnAttributes = true;
settings.CheckCharacters = true;
settings.OmitXmlDeclaration = false;
XmlWriter xmlWriter = XmlWriter.Create(otptFile,settings);
我生成的文件看起来像一个有效的xml文件,但是当我通过验证器运行时,我收到一个错误:ascii“\ EF”没有映射到unicode。
如果我在textpad中打开此文件并保存,则此错误消失且文件有效。
我正在使用streamReader读取ascii文件。我检查了是否需要在streamreader声明中设置一些内容,但据我所知,UTF-8是默认设置。
我试图理解为什么我的程序具有ascii值,如果我将编码设置为UTF-8以及如何在代码中轻松摆脱它。谢谢你的帮助!
答案 0 :(得分:3)
字节序列0xEF,0xBB,0xBF
是UTF-8 byte order mark(BOM)。
如果您不想输出BOM,请将Encoding property设置为UTF8Encoding实例,并将 encoderShouldEmitUTF8Identifier constructor参数设置为{{1} }}:
false