没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
2018/11/11 Java判断文件编码格式 - 明明是悟空 - 博客园
https://www.cnblogs.com/x_wukong/p/3732955.html 1/6
Java判断文件编码格式
转自:http://blog.csdn.net/zhangzh332/article/details/6719025
一般情况下我们遇到的文件编码格式为GBK或者UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:
Java代码
1. java.io.File f=new java.io.File("待判定的文本文件名");
2. try{
3. java.io.InputStream ios=new java.io.FileInputStream(f);
4. byte[] b=new byte[3];
5. ios.read(b);
6. ios.close();
7. if(b[0]==-17&&b[1]==-69&&b[2]==-65)
8. System.out.println(f.getName()+"编码为UTF-8");
9. else System.out.println(f.getName()+"可能是GBK");
10. }catch(Exception e){
11. e.printStackTrace();
12. }
上述代码只是简单判定了是否是UTF-8格式编码的文本文件,如果项目对要判定的文本文件编码不可控(比如用户上传的一些HTML、
XML等文本),可以采用一个现成的开源项目:cpdetector,它所在的网址是:http://cpdetector.sourceforge.net/。它的类库很
小,只有500K左右,利用该类库判定文本文件的代码如下(由于cpdetector的算法使用概率统计,所以结果并不是100%准确的,但是
是迄今为止我见过的最准确的....@_@):
Java代码
1. /*------------------------------------------------------------------------
2. detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
3. cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法
4. 加进来,如ParsingDetector、 JChardetFacade、ASCIIDetector、UnicodeDetector。
5. detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
6. 字符集编码。
7. --------------------------------------------------------------------------*/
8. cpdetector.io.CodepageDetectorProxy detector =
9. cpdetector.io.CodepageDetectorProxy.getInstance();
10. /*-------------------------------------------------------------------------
11. ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
12. 指示是否显示探测过程的详细信息,为false不显示。
13. ---------------------------------------------------------------------------*/
14. detector.add(new cpdetector.io.ParsingDetector(false));
15. /*--------------------------------------------------------------------------
16. JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
17. 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
18. 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
19. ---------------------------------------------------------------------------*/
20. detector.add(cpdetector.io.JChardetFacade.getInstance());
21. //ASCIIDetector用于ASCII编码测定
22. detector.add(cpdetector.io.ASCIIDetector.getInstance());
23. //UnicodeDetector用于Unicode家族编码的测定
公告
昵称:明明是悟空
园龄:6年6个月
粉丝:92
关注:4
+加关注
< 2018年11
日 一 二 三
28 29 30 31
4 5 6 7
11 12 13 14
18 19 20 21
25 26 27 28
2 3 4 5
搜索
我的标签
Linux(127)
web开发(84)
java(63)
c/c++(59)
android(45)
Linux内核(38)
chromium(29)
webrtc(23)
明明是悟空
术到极致,几近于道!
博客园 首页 新随笔 联系 订阅 管理
我只匆匆而过
- 粉丝: 14
- 资源: 317
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2022NOC软件创意编程赛项真题python小学高年级-决赛(有解析)
- mathml转换latex需要的xsl文件
- 2022NOC软件创意编程赛项真题图形化小学高年级-决赛赛(有解析)
- gbase驱动下载gbase-connector-java-8.3.81.53驱动下载
- 2022NOC软件创意编程赛项真题图形化小学低年级-决赛赛(有解析)
- InsightFace从青铜到王者,超大规模人脸识别的优雅解法
- python后端开发spider框架详解
- 基于 STM32 与 ESP8266 的智能家居系统源码.zip
- 毕业设计:基于SSM的mysql-个性化点餐配送系统(源码 + 数据库 + 说明文档)
- 基于matlab的鱼苗计数识别(GUI界面).zip代码57
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0