根据字节值判断文件的编码方式
2013-09-23 10:44
281 查看
普通文件,开始就是文件内容,有编码的,开头显示编码的定义。
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65。
可以据此判断是否是UTF-8编码格式:
如果项目对要判定的文本文件编码不可控(比如用户上传的一些HTML、XML等文本),可以采用一个现成的开源项目:cpdetector 。
最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,如下表: (此段程序尚未经过亲自验证)
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65。
可以据此判断是否是UTF-8编码格式:
File file = new File(path); InputStream ios = new java.io.FileInputStream(file); byte[] b = new byte[3]; ios.read(b); ios.close(); if (b[0] == -17 && b[1] == -69 && b[2] == -65) System.out.println(file.getName() + “:编码为UTF-8〃); else System.out.println(file.getName() + “:可能是GBK,也可能是其他编码。”);
如果项目对要判定的文本文件编码不可控(比如用户上传的一些HTML、XML等文本),可以采用一个现成的开源项目:cpdetector 。
最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,如下表: (此段程序尚未经过亲自验证)
EF BB BF UTF-8 FE FF UTF-16/UCS-2, little endian FF FE UTF-16/UCS-2, big endian FF FE 00 00 UTF-32/UCS-4, little endian. 00 00 FE FF UTF-32/UCS-4, big-endian. int[] head = new int[4]; InputStream inputStream = new FileInputStream(path); for(int i=0; i<4; i++){ head[0]=inputStream.read(); } inputStream.close(); String code = "ANSI"; if (head[0]==0xef && head[1]==0xbb && head[2]==0xbf) { code = "UTF-8"; } else if(head[0]==0xfe && head[1]==0xff) { code = "utf-16/ucs2, little endian"; } else if(head[0]==0xff && head[1]==0xfe) { code = "utf-16/ucs2, big endian"; } else if(head[0]==0xff && head[1]==0xfe && head[2]==0x0 && head[3]==0x0) { code = "UTF-32/ucs4, little endian"; } else if (head[0]==0x0 && head[1]==0x0 && head[2]==0xfe && head[3]==0xff) { code = "UTF-32/ucs4, big endian"; }
相关文章推荐
- VBA 判断一个TXT编码方式,再创建一个新的文件,复制数据进去
- FileUpload 上传文件,根据不同方式判断文件类型(文件后缀/文件类型)
- Java根据字节数据判断文件类型
- 根据文件内容前几个字节,判断文件类型
- 根据文件内容前几个字节,判断文件类型
- java通过判断文本的编码方式再读取文件
- 根据文件内容前几个字节,判断文件类型
- 判断一段文件是UTF-8编码还是GB2312的编码方式
- java检查文件夹中含有中文的文件(判断文件编码方式)
- 根据文件内容前几个字节,判断文件类型<知识点>
- 判断一段文件是UTF-8编码还是GB2312的编码方式
- 如何判断文件的编码方式
- 使用第三方库cpdetector来判断文件的编码方式
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- Java文件读写操作指定编码方式防乱码
- 设置EditPlus的默认文件格式、编码方式及制表符
- vs错误:使用 简体中文GB2312 编码加载文件时,有些字节已用unicode替换字符替换
- java判断文件编码
- java按照指定编码方式读取文件
- 源文件编码方式