Java检测文件编码
2017-06-30 18:13
204 查看
Java检测文件编码
在Demo中涉及到文件的读写操作,但是在程序中并不知道文件的编码格式,文件的编码格式有UTF8,GBK等,如果不指定固定的编码格式的话,会默认采用系统编码,如果原文件为GBK编码且包含中文,而采用UTF-8编码字节流向字符流读入则会中文乱码,BufferedReader br = null; br = new BufferedReader(new InputStreamReader(new FileInputStream( "./users.csv"), "指定源文件的编码格式"));
所以需要通过代码判断文件的编码格式;
这里使用了第三方工具包juniversalchardet
地址上有相应的说明,
maven依赖
<dependency> <groupId>com.googlecode.juniversalchardet</groupId> <artifactId>juniversalchardet</artifactId> <version>1.0.3</version> </dependency>
public static String getCharset(InputStream is) { UniversalDetector detector = new UniversalDetector(null); try { byte[] bytes = new byte[1024]; int nread; if ((nread = is.read(bytes)) > 0 && !detector.isDone()) { detector.handleData(bytes, 0, nread); } } catch (Exception localException) { log.info("detected code:", localException); } detector.dataEnd(); String encode = detector.getDetectedCharset(); /** default UTF-8 */ if (StringUtils.isEmpty(encode)) { encode = "UTF-8"; } detector.reset(); return encode; } public static void main(String[] args) { File file = new File("file path"); InputStream is = new FileInputStream(file); getCharset(is); }
编码格式检测的准确度有待验证。
附录:https://stackoverflow.com/questions/1677497/guessing-the-encoding-of-text-represented-as-byte-in-java
相关文章推荐
- 文件编码自动检测及编码转换 - 编码,编码转换,文件编码 - Java - ITeye论坛- 编码,编码转换,文件编码 - Java - ITeye论坛
- java检测文件编码——cpdetector
- java 使用CharsetDetector检测文件的编码方式
- java使用jchardet检测文本文件(字节流)的编码方式
- java 检测文本、文件编码(未测试)
- java 检测文本、文件编码
- Java 自动检测文件的编码
- ubuntu 下java写txt文件,编码问题
- asp检测文件编码
- 检测文件编码格式
- eclipse编译器编码与jsp java 等文件编码一些自己的理解
- MyEclipse设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- Java 小例子:按指定的编码读取文本文件内容
- 用asp实现检测文件编码
- 在Java中读写UTF-8编码文件
- ASP.NET杜绝文件上传漏洞的代码(通过检测文件的头部编码)
- 用 java 将文件的编码从GBK 转换成 UTF8收藏
- java 属性文件编码问题
- 用 java 将文件的编码从GBK 转换成 UTF8
- 关于Hibernate或者java本身文件编码错误的问题?