为什么xmlWriter在输出xml文件中写入ASCII字符?

时间:2010-11-13 00:29:58

标签: c# xml

以下是我设置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以及如何在代码中轻松摆脱它。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

字节序列0xEF,0xBB,0xBF是UTF-8 byte order mark(BOM)。

如果您不想输出BOM,请将Encoding property设置为UTF8Encoding实例,并将 encoderShouldEmitUTF8Identifier constructor参数设置为{{1} }}:

false