以下是我设置 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。
如果我在文本板中打开此文件并保存它,此错误就会消失并且文件有效。
我正在使用streamReader 读取ascii 文件。我检查了是否需要在流读取器声明中设置某些内容,但据我了解,UTF-8 是默认值。
我试图理解为什么我的程序有 ascii 值,如果我将编码设置为 UTF-8,以及如何在我的代码中轻松摆脱它。感谢您的帮助!
最佳答案
字节序列0xEF,0xBB,0xBF
是UTF-8 byte order mark ( Material list )。
如果不想输出BOM,设置Encoding property到 UTF8Encoding带有 encoderShouldEmitUTF8Identifier 的实例 constructor参数设置为 false
:
settings.Encoding = new UTF8Encoding(false);
关于c# - 为什么 xmlWriter 在输出 xml 文件中写入 ASCII 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170197/