`
wyh6635
  • 浏览: 29737 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java中对有BOM头的UTF-8文件的处理

阅读更多

在用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte Order Mark)。JDK1.5之前的Reader都不能处理BOM,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog. 据说JDK1.6已经解决了这个bug。(参考http://www.uuzone.com/blog/mao/98921.htm
在未使用JDK1.6之前,解决办法有三:
1、不要使用有BOM头的xml文件,就是说不要用记事本保存utf-8的xml文件,editplus就很好用;
2、使用这位仁兄的unicodereader,可以正确处理有BOM的xml文件:
http://koti.mbnet.fi/akini/java/unicodereader/
3、如果是用Xerces解析器,直接传Stream给Xerces,而不是传Reader,Xerces就可以正确的处理了。总之不要用Reader就好了。

分享到:
评论

相关推荐

    Java解决UTF-8的BOM问题

    本文将深入探讨如何使用Java来处理带有BOM的UTF-8文件。 首先,`UnicodeInputStream`和`UnicodeReader`是Java中用于处理Unicode编码流的类。它们是`java.io`包的一部分,提供了对带有BOM的文件进行读取的功能。`...

    IDEA支持带BOM的UTF-8编码文件.rar

    理解IDEA对带BOM的UTF-8文件的支持,可以帮助开发者更高效地处理跨平台或跨系统的工作,避免因编码问题导致的不必要困扰。通过灵活地配置IDEA的编码设置,可以确保代码在各种环境中都能正常工作,同时保持良好的...

    java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题

    这个场景中,我们面临的挑战是如何正确处理UTF-8带有BOM(Byte Order Mark)的文件,因为BOM可能会导致文件内容显示为问号或者其他乱码。下面将详细介绍如何解决这个问题。 首先,我们需要理解什么是UTF-8的BOM。...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取...

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

    2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字根据IDEA版本会有所不同),将Util.class替换该jar包目录中\org\eclipse\jdt\internal\compiler\util路径下的...

    解决IDEA不支持带BOM的UTF-8编码文件,使支持

    2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字根据IDEA版本会有所不同),将Util.class替换该jar包目录中\org\eclipse\jdt\internal\compiler\util路径下的...

    判断文本文件是否为UTF-8编码

    但没有BOM的UTF-8文件也是存在的,所以这一步不能作为唯一依据。 2. **扫描字节序列**:遍历文件内容,检查字节序列是否符合UTF-8编码规则。对于多字节字符,后续字节的最高位应为10,且每个字节的排列组合能对应到...

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

    例如,UTF-8的BOM是三个字节(0xEF, 0xBB, 0xBF),而UTF-16LE和UTF-16BE的BOM分别是两个字节(0xFF, 0xFE)和(0xFE, 0xFF)。虽然UTF-8的BOM在很多情况下不是必须的,但有些软件可能会在创建文件时默认添加。 在...

    java处理BOM头的XML

    在UTF-8编码中,BOM是可选的,但某些编辑器如记事本默认会添加。 当XML文件以UTF-16编码并包含BOM头时,DOM4J在解析过程中可能会遇到问题,因为DOM4J默认并不期望XML文档以这种方式开始。这可能导致解析异常,例如`...

    utf-8码转换器(转换成utf-8码)

    对于ASCII字符,UTF-8编码和ASCII编码相同,都是单字节,这使得UTF-8在处理英文文本时效率较高。 2. **SWT(Standard Widget Toolkit)**: SWT是Eclipse基金会的一个开源项目,它是一个用于创建跨平台GUI应用程序...

    去除BOM文件头工具

    标题"去除BOM文件头工具"指的是一个专门设计用来处理这个问题的小型实用程序,它可以帮助用户批量删除UTF-8文件的BOM头。BOM头虽然对解析UTF-8编码的文本文件至关重要,但在某些情况下,如代码编辑器或版本控制系统...

    如何将文本转换为UTF-8码 .e.rar

    - 对于有BOM的UTF-8文件,某些程序可能无法正确处理,因此在转换时可以选择是否保留BOM。 以上就是关于“如何将文本转换为UTF-8码”的详细步骤和方法,通过这些工具和技巧,你可以轻松地处理各种编码格式的文本...

    eclipse默认编码GBK改为UTF-8

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它在默认情况下使用GBK编码,这可能会对处理UTF-8编码的项目造成困扰。GBK是中国大陆广泛采用的一种汉字编码标准,而UTF-8是国际化的多语言字符编码,能支持世界上...

    eclispe GBK转UTF-8乱码解决

    可以使用外部工具,如Notepad++,打开文件,选择“Encoding”菜单,选择“Convert to UTF-8 without BOM”,然后保存。再导入Eclipse,应该能正常显示。 4. **处理资源文件**:对于非源代码文件,如配置文件、文本...

    java去掉txt文本的bom头信息

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

    如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程.zip

    在处理包含中文字符的Java工程时,有时需要将GBK编码的工程转换为UTF-8编码,以确保在不同系统或工具中的正常显示和处理。本教程将详细讲解如何使用Java代码来完成这个转换过程。 首先,我们需要了解GBK和UTF-8编码...

    CodeDetector:检测文件编码,现在支持UTF-8,GBK,UTF-16LE,UTF-16BE,Java

    目前支持 UTF-8(BOM或无BOM)、GBK、UTF-16LE、UTF-16BE单个文件或文件夹,支持编码批量转换。使用方法:1、直接使用,下载jar包,直接使用。下载jar/CodeDetector-1.0.jar检测编码:java -jar CodeDetector-1.0.jar ...

    解决IDEA不支持带BOM的UTF-8编码文件,使支持-清风明月兮

    2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字根据IDEA版本会有所不同),将Util.class替换该jar包目录中\org\eclipse\jdt\internal\compiler\util路径下的...

Global site tag (gtag.js) - Google Analytics