默认情况下,.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。
以下分别是两段代码的输出效果:
我们可以发现前一个文件在头部多了三个字节,分别是ef bb bf,这就是BOM标志了。哈哈。
分享到:
相关推荐
在Asp.net 2.0开发中,GridView控件是一个常用的数据展示工具,它能够方便地绑定各种数据源并以表格形式展示数据。在实际应用中,常常有需求将GridView中的数据导出到Excel文件,以便用户进行进一步的分析、处理或...
Java处理带有BOM头的XML文件是一个常见的编程挑战,特别是在使用DOM4J解析XML文档时。BOM(Byte Order Mark)是Unicode字符集中的一个特殊字符,用于标识文本的编码方式。在UTF-16编码中,BOM通常出现在文件的开头,...
在.NET框架2.0版本中,C#程序员经常会遇到处理不同编码格式的文本文件的问题。在实际工作中,由于历史原因或跨平台需求,文件可能会采用ANSI、Unicode(小端序)或者UTF-8等不同的编码方式。"C# text文件编码批量...
通过以上步骤,你就能够在C#中创建带有BOM头的UTF-8文件了。在提供的`writefilewithbom.cs`文件中,应该包含了类似的代码实现。你可以查看并学习这段代码,以加深对这一过程的理解。在实际开发中,你还可以根据需求...
解决PB创建UTF-8文件带BOM问题; 2.字段串直接生成XML文件。 由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用...
在这个示例中,`GetUTF8String`函数接收一个文件路径作为参数,返回去除BOM头后的文件内容。如果文件有BOM头,函数会跳过它;如果没有,函数会直接读取文件内容。这个函数可以有效解决由BOM头引发的乱码问题。 总之...
在本篇技术文章中,作者探讨了如何使用VB.NET进行AutoCAD的二次开发,以实现从DWG格式的图纸中自动获取并导出BOM(Bill of Materials,材料明细表)信息到Excel表格。这个过程涉及到ActiveX技术,使得VB.NET能够与...
1. **隐形字符**:在文本文件中,BOM头被视为一个额外的、不可见的字符,这可能会影响文本的显示或处理。 2. **兼容性问题**:不是所有的软件都支持或者正确处理BOM头,尤其是旧版本的工具或不常用的语言。 3. **...
BOM头的存在对于许多文本编辑器和处理程序来说不是问题,但是对于一些不支持或者不期望看到BOM头的工具,如某些版本控制系统、XML解析器或者Web服务器,可能会引发问题。例如,一些旧版的脚本语言(如PHP)在读取带...
3. **格式问题**:在XML和JSON等格式中,BOM头是不被标准允许的,因此如果存在BOM头,文件可能被视为无效。 **如何去除BOM头** 去除BOM头的方法有多种,以下是一些常见的方法: 1. **Notepad++**:使用Notepad++...
BOM头虽然对解析UTF-8编码的文本文件至关重要,但在某些情况下,如代码编辑器或版本控制系统中,可能会导致意外的显示问题或者不兼容性。 描述中提到的"批量转换utf-8"意味着这个工具不仅能够去除BOM,还能进行批量...
然而,有些编辑器会在保存UTF-8文件时默认添加BOM,这可能导致在不支持BOM的程序中出现兼容性问题。 3. **文件操作**:在PHP中,我们可以使用如`scandir()`、`opendir()`、`readdir()`、`closedir()`等函数来遍历...
然而,并非所有UTF-8文件都包含BOM,尤其是纯文本文件往往不带BOM,以避免在处理文件时引入额外的字节。 在IT领域,理解和判断无头BOM的UTF-8文件对于软件开发、数据处理和文本分析等工作至关重要。这涉及到以下几...
在VB.NET中,`StreamReader`和`StreamWriter`是用于读写文本文件的类,它们默认使用UTF-8编码,但如果没有BOM(Byte Order Mark)头,可能会导致识别错误。因此,我们需要显式指定编码来确保正确读取。 以下是一段...
以下是一个简单的示例,展示了如何读取带有BOM头的UTF-8文件,并将其写入一个新的不带BOM头的文件: ```java import java.io.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; ...
1. 如果你的IDEA是2017.2.2版本,那么直接把ecj-4.6.2.jar放到你的IDEA安装目录下lib文件夹中替换原文件即可 2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字...
本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是BOM。BOM是UTF-8、UTF-16和UTF-32等编码格式中的一个可选标记,用于告知解析器文件的编码类型。例如,UTF-8的BOM是三...
所以要去掉带有bom的文件。 操作步骤 1.将bom.php文件放在项目根目录 2.我用的是xampp集成环境,首先进入到/opt/lampp/bin/ 然后在bin目录下执行 ./php /opt/lampp/htdocs/项目名/bom.php 回车即可。
去除文件中的BOM头信息. 一些文档工具可以打开再保存为无bom格式,但文件太多就很费力,此工具类可以直接运行,直接输入你要修改的文件夹路径即可,可自由调整文件夹深度,进行子级文件夹读取
通常在UTF-8编码的文件中,如果存在BOM头,那么文件的开头会有三个不可见的字符:\xEF\xBB\xBF。虽然大多数现代编辑器能够正确处理BOM头,但在某些情况下,例如在PHP中包含或处理这些文件时,BOM头可能会引起错误,...