`
didasoft
  • 浏览: 164967 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在.NET 2.0中创建不带BOM头的XML文件

阅读更多

默认情况下,.NET中生成的Unicode的XML文件都带有BOM头。然而,群中有人问到:在一些特殊情况下,如果不想生成这个BOM头,应该怎么办呢?

 

查了下MSDN,果然有办法。

 

先看默认的XMLWriter的用法:

 

        public static void WriteFile()
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.IndentChars = ("    ");
            using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
            {
                // Write XML data.
                writer.WriteStartElement("book");
                writer.WriteElementString("price", "19.95");
                writer.WriteEndElement();
                writer.Flush();
            }

        }

 

这样写会在XML头部添加BOM。要解决问题,请看以下的代码:

 

        public static void WriteFile()
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Encoding = new UTF8Encoding(false);
            settings.Indent = true;
            settings.IndentChars = ("    ");
            using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
            {
                // Write XML data.
                writer.WriteStartElement("book");
                writer.WriteElementString("price", "19.95");
                writer.WriteEndElement();
                writer.Flush();
            }

        }
我们需要给settings对象设置一个新的Encoding实例,这个实例是不会添加BOM的。而默认的实例会添加BOM。
请注意构造函数传入了false参数,这会通知Encoding实例不写入BOM。
 
以下分别是两段代码的输出效果:
 
image 
 
image 
 
我们可以发现前一个文件在头部多了三个字节,分别是ef bb bf,这就是BOM标志了。哈哈。
 
分享到:
评论

相关推荐

    Asp.net 2.0 GridView数据导出Excel文件.rar

    在Asp.net 2.0开发中,GridView控件是一个常用的数据展示工具,它能够方便地绑定各种数据源并以表格形式展示数据。在实际应用中,常常有需求将GridView中的数据导出到Excel文件,以便用户进行进一步的分析、处理或...

    java处理BOM头的XML

    Java处理带有BOM头的XML文件是一个常见的编程挑战,特别是在使用DOM4J解析XML文档时。BOM(Byte Order Mark)是Unicode字符集中的一个特殊字符,用于标识文本的编码方式。在UTF-16编码中,BOM通常出现在文件的开头,...

    C# text文件编码批量转换(.net 2.0)

    在.NET框架2.0版本中,C#程序员经常会遇到处理不同编码格式的文本文件的问题。在实际工作中,由于历史原因或跨平台需求,文件可能会采用ANSI、Unicode(小端序)或者UTF-8等不同的编码方式。"C# text文件编码批量...

    C#写入文件加上bom头,主要适用于utf8文件

    通过以上步骤,你就能够在C#中创建带有BOM头的UTF-8文件了。在提供的`writefilewithbom.cs`文件中,应该包含了类似的代码实现。你可以查看并学习这段代码,以加深对这一过程的理解。在实际开发中,你还可以根据需求...

    PB字符串转XML文件,解决PB12.5创建UTF-8文件BOM问题(powerbuilder 12.5)

    解决PB创建UTF-8文件带BOM问题; 2.字段串直接生成XML文件。 由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用...

    C#获取去除文件bom头后的内容

    在这个示例中,`GetUTF8String`函数接收一个文件路径作为参数,返回去除BOM头后的文件内容。如果文件有BOM头,函数会跳过它;如果没有,函数会直接读取文件内容。这个函数可以有效解决由BOM头引发的乱码问题。 总之...

    基于VB.net的获取AutoCAD中BOM的二次开发

    在本篇技术文章中,作者探讨了如何使用VB.NET进行AutoCAD的二次开发,以实现从DWG格式的图纸中自动获取并导出BOM(Bill of Materials,材料明细表)信息到Excel表格。这个过程涉及到ActiveX技术,使得VB.NET能够与...

    什么是BOM头?如何去除文件中的BOM头

    1. **隐形字符**:在文本文件中,BOM头被视为一个额外的、不可见的字符,这可能会影响文本的显示或处理。 2. **兼容性问题**:不是所有的软件都支持或者正确处理BOM头,尤其是旧版本的工具或不常用的语言。 3. **...

    去bom头工具

    BOM头的存在对于许多文本编辑器和处理程序来说不是问题,但是对于一些不支持或者不期望看到BOM头的工具,如某些版本控制系统、XML解析器或者Web服务器,可能会引发问题。例如,一些旧版的脚本语言(如PHP)在读取带...

    什么是BOM头,如何去掉BOM头.zip

    3. **格式问题**:在XML和JSON等格式中,BOM头是不被标准允许的,因此如果存在BOM头,文件可能被视为无效。 **如何去除BOM头** 去除BOM头的方法有多种,以下是一些常见的方法: 1. **Notepad++**:使用Notepad++...

    去除BOM文件头工具

    BOM头虽然对解析UTF-8编码的文本文件至关重要,但在某些情况下,如代码编辑器或版本控制系统中,可能会导致意外的显示问题或者不兼容性。 描述中提到的"批量转换utf-8"意味着这个工具不仅能够去除BOM,还能进行批量...

    php查找当前目录下所有带有bom的文件

    然而,有些编辑器会在保存UTF-8文件时默认添加BOM,这可能导致在不支持BOM的程序中出现兼容性问题。 3. **文件操作**:在PHP中,我们可以使用如`scandir()`、`opendir()`、`readdir()`、`closedir()`等函数来遍历...

    无头BOM的UTF8文件判断

    然而,并非所有UTF-8文件都包含BOM,尤其是纯文本文件往往不带BOM,以避免在处理文件时引入额外的字节。 在IT领域,理解和判断无头BOM的UTF-8文件对于软件开发、数据处理和文本分析等工作至关重要。这涉及到以下几...

    VB.NET读取文本(解决乱码)

    在VB.NET中,`StreamReader`和`StreamWriter`是用于读写文本文件的类,它们默认使用UTF-8编码,但如果没有BOM(Byte Order Mark)头,可能会导致识别错误。因此,我们需要显式指定编码来确保正确读取。 以下是一段...

    java去掉txt文本的bom头信息

    以下是一个简单的示例,展示了如何读取带有BOM头的UTF-8文件,并将其写入一个新的不带BOM头的文件: ```java import java.io.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; ...

    IDEA支持带BOM的UTF-8编码文件的解决方案

    1. 如果你的IDEA是2017.2.2版本,那么直接把ecj-4.6.2.jar放到你的IDEA安装目录下lib文件夹中替换原文件即可 2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字...

    java获取文件编码(判断有无BOM)

    本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是BOM。BOM是UTF-8、UTF-16和UTF-32等编码格式中的一个可选标记,用于告知解析器文件的编码类型。例如,UTF-8的BOM是三...

    PHP去掉整个项目中带有bom头编码的文件

    所以要去掉带有bom的文件。 操作步骤 1.将bom.php文件放在项目根目录 2.我用的是xampp集成环境,首先进入到/opt/lampp/bin/ 然后在bin目录下执行 ./php /opt/lampp/htdocs/项目名/bom.php 回车即可。

    java去除文件头bom信息

    去除文件中的BOM头信息. 一些文档工具可以打开再保存为无bom格式,但文件太多就很费力,此工具类可以直接运行,直接输入你要修改的文件夹路径即可,可自由调整文件夹深度,进行子级文件夹读取

    PHP删除bom头方法实例

    通常在UTF-8编码的文件中,如果存在BOM头,那么文件的开头会有三个不可见的字符:\xEF\xBB\xBF。虽然大多数现代编辑器能够正确处理BOM头,但在某些情况下,例如在PHP中包含或处理这些文件时,BOM头可能会引起错误,...

Global site tag (gtag.js) - Google Analytics