`
顽石OK07
  • 浏览: 81395 次
  • 性别: 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文件的第一、二、三个字节输出到文件。

分享到:
评论

相关推荐

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

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

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

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

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

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

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

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

    selectersky gb2312和utf-8文件编码互换工具 v1.05

    UTF-8编码后的文件: session.codepage = 65001 Response.CharSet = "utf-8" GB2312编码后的文件: session.codepage = 936 Response.CharSet = "gb2312" 如果还是不行,请确认你的转换操作是否正确或联系我 ...

    懒人包:UTF-8的ApacheJMeter_http.jar和ApacheJMeter_core.jar

    字符编码修改为utf-8 ,解决上传文件与录制脚本的中文乱码问题,下载jar文件替换到Jmeter的lib/ext目录下即可,重启jmeter,重新选择上传文件,在请求中设置内容编码,请求时勾选“对POST使用multipart / form-data”...

    CStdioFileEx(支持ANSI、UNICODE、UNICODE big endian、UTF-8编码的文本读取

    (包括ANSI、UNICODE、UNICODE big endian、UTF-8)格式的文本文件 */ //核心算法:CStdioFileEx继承自CStdioFile, 覆盖CStdioFile的 BOOL ReadString(CString& rString)方法, // 根据不同文件编码特征,寻找文件...

    gbk-utf8:GBK转换为UTF-8,反之亦然

    utf8.c 从GBK到UTF-8以及从UTF-8到GBK的转换实现。utf8.h GBK和UTF-8转换头文件。

    批量去除utf-8的bom头(php版)

    UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来...

    UTF-8文件BOM标记批量删除工具.rar

    本工具用于批量去除UTF-8中的BOM标记,批量操作非常省时省力,再不用一个个文件去删除了默认类型为php|html|js|css,多类型可使用|分隔符进行分隔,支持将ANSI文件转为UTF8,建议在去除BOM文件头时,请先做好备份。

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

    压缩包内包含 ecj-4.6.2.jar 和 Util.class两个文件 使用说明: 1. 如果你的IDEA是2017.2.2版本,那么直接把ecj-4.6.2.jar放到你的IDEA安装目录下lib文件夹中替换原文件即可 2. 如果你是其他版本的IDEA,那么用压缩...

    PHP批量删除、清除UTF-8文件BOM头的代码实例

    主要介绍了PHP批量删除、清除UTF-8文件BOM头的代码实例,需要的朋友可以参考下

    添加或删除 xml CSV UTF-8 bom头文件

    添加或删除 xml CSV UTF-8 bom头文件

    php页面,mysql数据库转utf-8乱码,utf-8编码问题总结

    PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header(“Content-Type: text/html;charset=utf-8”); 2.PHP文件编码问题 点击编辑器的菜单:“文件”-&gt;“另存为”,可以看到当前文件的编码,确保文件编码为:...

    PHP实现UTF-8文件BOM自动检测与移除实例

    本文实例讲述了PHP实现UTF-8文件BOM自动...要检测一个UTF-8文件是否含有BOM信息,就是检测文件开头的字三个符,是否为0xEF, 0xBB, 0xBF。下面这个小程序,用户遍历某个目录下所有文件,并检测是否加了BOM。 复制代码

    PHP乱码问题,UTF-8乱码常见问题小结

    一.HTML页面转UTF-8编码问题 1.在head后,title前加入一行: &... 3.HTML文件头BOM问题: 将文件从其他的编码转换成UTF-8编码时,有时候会在文件的最开始加上一个BOM标签, 在个BOM标签可能会导致浏览器在显示中文的时

    utf-8编码引起js输出中文乱码的解决办法

    编码规则是utf-8,如网页头中的: &lt;meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /&gt; 那么js文件中如果有中文输出就会出现乱码,解决此个问题有两个方法: 1、在引用javascript输出...

    VS201X去除UTF-8控制符BOM插件

    VS201X编辑UTF-8编码的HTML文件时,总会在头部添加0xEF, 0xBB, 0xBF 三字节的BOM符,影响了HTML的正常解析,可以使用Fix File Encoding插件将其去除。

    php中隐形字符65279(utf-8的BOM头)问题

    今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下...在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。  utf-8文件在php中输出的时候bom是会被输出的,所以要在php中

    UTF-8 批量检测BOM工具/小软件 utf8 BOM批量检测/检查清除

    前次一次工程开发,有...本压缩包附带GB/BIG/UTF-8文件编码批量转换工具(文件名:GB2UTF81.exe) 这个工具很好很强大 还有一个bom批量检测清除工具,php版本的。只可惜只支持当前目录。不支持子目录(文件名:bom.php)

Global site tag (gtag.js) - Google Analytics