转载: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文件的第一、二、三个字节输出到文件。
分享到:
相关推荐
1.首先介绍一下本人应用场景,qt...3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加删除时可用于文件数量统计。
C# 生成xml文件,编码为utf-8方法
去除bom头小工具,工具使用方法: 选择要遍历的文件夹,输入...勾选ANSI转为UTF-8,则会将相应格式但编码为GB2312,GBK,GB18030的文件转为无BOM的UTF-8文件 请确保文件可写!使用前请做好备份,作者不承担任何法律责任
修改xml文件的编码格式:GB2312格式修改为UTF-8
UTF-8编码后的文件: session.codepage = 65001 Response.CharSet = "utf-8" GB2312编码后的文件: session.codepage = 936 Response.CharSet = "gb2312" 如果还是不行,请确认你的转换操作是否正确或联系我 ...
字符编码修改为utf-8 ,解决上传文件与录制脚本的中文乱码问题,下载jar文件替换到Jmeter的lib/ext目录下即可,重启jmeter,重新选择上传文件,在请求中设置内容编码,请求时勾选“对POST使用multipart / form-data”...
utf8.c 从GBK到UTF-8以及从UTF-8到GBK的转换实现。utf8.h GBK和UTF-8转换头文件。
(包括ANSI、UNICODE、UNICODE big endian、UTF-8)格式的文本文件 */ //核心算法:CStdioFileEx继承自CStdioFile, 覆盖CStdioFile的 BOOL ReadString(CString& rString)方法, // 根据不同文件编码特征,寻找文件...
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来...
本工具用于批量去除UTF-8中的BOM标记,批量操作非常省时省力,再不用一个个文件去删除了默认类型为php|html|js|css,多类型可使用|分隔符进行分隔,支持将ANSI文件转为UTF8,建议在去除BOM文件头时,请先做好备份。
主要介绍了PHP批量删除、清除UTF-8文件BOM头的代码实例,需要的朋友可以参考下
添加或删除 xml CSV UTF-8 bom头文件
PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header(“Content-Type: text/html;charset=utf-8”); 2.PHP文件编码问题 点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:...
本文实例讲述了PHP实现UTF-8文件BOM自动...要检测一个UTF-8文件是否含有BOM信息,就是检测文件开头的字三个符,是否为0xEF, 0xBB, 0xBF。下面这个小程序,用户遍历某个目录下所有文件,并检测是否加了BOM。 复制代码
一.HTML页面转UTF-8编码问题 1.在head后,title前加入一行: &... 3.HTML文件头BOM问题: 将文件从其他的编码转换成UTF-8编码时,有时候会在文件的最开始加上一个BOM标签, 在个BOM标签可能会导致浏览器在显示中文的时
编码规则是utf-8,如网页头中的: <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /> 那么js文件中如果有中文输出就会出现乱码,解决此个问题有两个方法: 1、在引用javascript输出...
VS201X编辑UTF-8编码的HTML文件时,总会在头部添加0xEF, 0xBB, 0xBF 三字节的BOM符,影响了HTML的正常解析,可以使用Fix File Encoding插件将其去除。
今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下...在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。 utf-8文件在php中输出的时候bom是会被输出的,所以要在php中
前次一次工程开发,有...本压缩包附带GB/BIG/UTF-8文件编码批量转换工具(文件名:GB2UTF81.exe) 这个工具很好很强大 还有一个bom批量检测清除工具,php版本的。只可惜只支持当前目录。不支持子目录(文件名:bom.php)
C#写入文件加上bom头,主要适用于utf8文件