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

标签 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。

如果我在文本板中打开此文件并保存它,此错误就会消失并且文件有效。

我正在使用streamReader 读取ascii 文件。我检查了是否需要在流读取器声明中设置某些内容,但据我了解,UTF-8 是默认值。

我试图理解为什么我的程序有 ascii 值,如果我将编码设置为 UTF-8,以及如何在我的代码中轻松摆脱它。感谢您的帮助!

最佳答案

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

如果不想输出BOM,设置Encoding propertyUTF8Encoding带有 encoderShouldEmitUTF8Identifier 的实例 constructor参数设置为 false:

settings.Encoding = new UTF8Encoding(false);

关于c# - 为什么 xmlWriter 在输出 xml 文件中写入 ASCII 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170197/

相关文章:

java - Android 转换器应用程序在转换时崩溃

c# - 如何获得两个(0~15)数字作为一个字节作为支持字段的属性?

c# - 创建可在运行时计算的表达式

c# - EnterpriseLibrary 数据访问应用程序 block 重定向部分找不到默认数据库

c# - 如何创建表示 DateTime 中日期的 XElement 类型为 xs :Date

javascript - JS 中的 XML 字符串操作?

c# - 使用 x509 证书签署 json 文档或字符串

java - 如何使用设置中的 if 语句更改背景颜色?

c# - 获取客户端机器名

c# - 获取实现特定开放通用类型的所有类型