`
顽石OK07
  • 浏览: 83829 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

UTF-8文件头的问题

阅读更多

转载:http://hi.baidu.com/tianpaomian/blog/item/21c0fa0222b71c064bfb5136.html

 

在读写有关UTF-8格式的文件时,特别是如UTF-8格式的txt文件时,经常会遇到由于UTF-8的文件头造成的乱码问题。最近又碰到了,写下来记录一下处理方式吧,有更好的方法,欢迎各位留言交流。

所有采用UTF-8格式编码的文件的文件头三个字节用16进制表示是EFBBBF,因此在读取UTF-8格式文件的时候,需要去掉这个文件头。而当你并不了解读取的文件是GBK格式还是UTF-8格式时,你就不得不通过这个文件头来判断了。具体可以按照如下方式判断:

1、从文件流中读取前三个字节到一个byte[3]数组中;
2、通过Integer.toHexString(byte[0] & 0xFF),将byte[3]数组中的三个byte分别转换成16进制的字符表示;
3、根据对三个byte进行转换后得到的字符串,与UTF-8格式头EFBBBF进行比较即可知道是否UTF-8格式。

读UTF-8格式文件的时候,需要注意文件头,而在输出UTF-8文件的时候,同样也要注意这个文件头,否则你输出的文件,在使用记事本打开时,会出现乱码。为了将EFBBBF作为文件头输出,可以如下操作:

1、分别得到EF、BB、BF三个byte,比如得到EF,可以这样

byte b0 = Byte.decode("0xE").byteValue();   //得到16进制E的byte值
b0 = (byte)(b0 << 4);                                     //将16进制E的byte值左移4为
byte b1 = Byte.decode("0xF").byteValue();   //得到16进制F的byte值
byte ef = (b0 | b1);                                         //将左移4位后的E与F进行或操作

2、将得到的EF、BB、BF按照顺序作为UTF-8文件的第一、二、三个字节输出到文件。

分享到:
评论

相关推荐

    Java解决UTF-8的BOM问题

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

    C# 生成xml文件,编码为utf-8方法

    使用 UTF-8 编码可以确保生成的 XML 文件能够正确地表达 Unicode 字符,从而避免字符乱码的问题。此外,UTF-8 编码也是 XML 文件的默认编码格式,使用它可以与其他系统和应用程序进行良好的集成。 需要注意的是,在...

    utf-8文件非常好用

    总而言之,UTF-8文件因其高效、兼容和通用性,在IT领域得到了广泛应用。无论是文本编辑、编程、网页设计还是数据库管理,UTF-8都是一个稳定可靠的选择,极大地简化了跨语言和跨平台的文本处理工作。因此,掌握UTF-8...

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

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

    批量utf文件转utf8-bom

    不带BOM的UTF-8文件可能会导致乱码或者程序无法正确解析。 实现批量转换的方法有多种: 1. 使用命令行工具:例如在Windows中,可以利用`iconv`或`notepad++`的命令行版本。`iconv`命令可以指定源编码和目标编码,...

    解决Invalid byte 1 of 1-byte UTF-8 sequence

    标题 "解决Invalid byte 1 of 1-byte UTF-8 sequence" 涉及的问题是关于字符编码不匹配引发的错误,通常在处理包含非ASCII字符的文本文件时出现。UTF-8是一种广泛使用的字符编码标准,能表示世界上大部分语言的字符...

    utf-8批量bom添加删除(BomChecker)工具

    1.首先介绍一下本人应用场景,qt...3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加删除时可用于文件数量统计。

    UTF-8去BOM头工具

    这个工具整合了之前的去BOM工具和所需的DLL(动态链接库)文件,使得用户可以方便地处理含有BOM头的UTF-8文件。DLL文件通常包含了一组可供其他程序调用的函数或服务,这里可能是为了实现去BOM功能的底层逻辑。 使用...

    UTF-8文件批量去除BOM标记

    总的来说,UTF-8文件的BOM标记是一个在编码和解码过程中需要注意的细节。批量去除BOM工具的存在,为开发者提供了一种便捷的解决方案,帮助他们处理那些因为BOM引发的问题,确保文件的兼容性和正确性。在处理大量UTF-...

    java jsp解决utf-8乱码.zip

    在Java JSP开发中,遇到UTF-8编码导致的乱码问题是一个常见的困扰。这个问题主要涉及到字符编码的统一和正确处理。UTF-8是一种广泛使用的Unicode字符编码方案,它可以支持几乎所有的字符集,包括中文、日文和韩文。...

    UTF-8 编码转换工具

    同时,服务器也需要设置正确的Content-Type头,声明响应内容的字符集为UTF-8,以确保数据在传输过程中不发生乱码。 5. **文件编码的重要性** 正确的文件编码对于保证数据的完整性和一致性至关重要。不同的编码可能...

    UTF-8文件去除BOM头小工具

    去除bom头小工具,工具使用方法: 选择要遍历的文件夹,输入...勾选ANSI转为UTF-8,则会将相应格式但编码为GB2312,GBK,GB18030的文件转为无BOM的UTF-8文件 请确保文件可写!使用前请做好备份,作者不承担任何法律责任

    支付宝asp集成_utf-8

    本文将详细阐述“支付宝asp集成_utf-8”这一主题,包括如何实现UTF-8编码下的支付宝接口集成,以及解决可能出现的乱码问题。 首先,我们要了解UTF-8编码的重要性。UTF-8是一种广泛使用的Unicode字符编码,能够表示...

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

    在C#编程中,有时我们需要在写入UTF-8文件时添加这个BOM头,以确保其他程序或系统能正确识别文件的编码。 在C#中,我们通常使用`System.IO.StreamWriter`类来写入文本文件。默认情况下,`StreamWriter`创建的UTF-8...

    zh-cn-utf8

    1. **PHP文件编码**:确保所有PHP源代码文件使用UTF-8无BOM格式保存。BOM(Byte Order Mark)可能会导致在某些情况下出现问题。 2. **HTTP头部**:在PHP脚本中通过`header()`函数设置响应头的`Content-Type`为`text...

    C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法

    1. **写BOM头**:UTF-8编码的文件通常以字节顺序标记(BOM)开始,即0xEF BB BF。这有助于识别文件的编码格式,但不是必需的。你可以选择是否写入BOM,根据需求决定。 2. **计算Unicode字符串的长度**:使用...

    修改xml文件的编码格式:GB2312格式修改为UTF-8

    修改xml文件的编码格式:GB2312格式修改为UTF-8

    Ueditor富文编辑器—jsp-utf-8

    同时,根据标签`jsp-utf-8`,你需要确保所有的文件操作和数据库交互都采用UTF-8编码。 6. **本地化**:Ueditor支持多语言,如果你想实现表情本地化,可以在配置项中指定本地的表情资源路径,让编辑器加载本地的表情...

    易语言TXT快速转换UTF-8源码

    本资源提供的是一个易语言编写的TXT文本文件快速转换为UTF-8编码格式的源代码,这对于处理大量文本数据或需要跨平台兼容性的项目非常有用。 在编程领域,字符编码是至关重要的,因为它决定了程序如何理解和显示文本...

    ewebeditor在线编辑器官方2.8修改utf-8

    对于一个支持多语言的网站,使用UTF-8可以避免字符乱码问题,确保不同语言的用户都能正确显示内容。 **3. 修改过程** 将eWebEditor修改为UTF-8编码可能涉及到对源代码的调整,确保所有字符都能正确地以UTF-8格式...

Global site tag (gtag.js) - Google Analytics