判断文件的编码格式,作为一个Android程序员

detector.add(new ParsingDetector(false));

/*

  • JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  • 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  • 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

*/

detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

// ASCIIDetector用于ASCII编码测定

detector.add(ASCIIDetector.getInstance());

// UnicodeDetector用于Unicode家族编码的测定

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset = null;

File f = new File(path);

try {

charset = detector.detectCodepage(f.toURI().toURL());

} catch (Exception ex) {

ex.printStackTrace();

}

if (charset != null)

return charset.name();

else

return null;

}

[java] view plain copy print ?

  1. String charsetName = getFileEncode(configFilePath);

  2. System.out.println(charsetName);

  3. inputStream = new FileInputStream(configFile);

  4. BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

String charsetName = getFileEncode(configFilePath);

System.out.println(charsetName);

inputStream = new FileInputStream(configFile);

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

读jar包内部资源文件(先利用cpdetector检测jar内部的资源文件的编码格式,然后以检测到的编码方式去读文件):

[java] view plain copy print ?

  1. /**

  2. * 利用第三方开源包cpdetector获取URL对应的文件编码

  3. *

  4. * @param path

  5. *            要判断文件编码格式的源文件的URL

  6. * @author huanglei

  7. * @version 2012-7-12 14:05

  8. */

  9. public static String getFileEncode(URL url) {

  10. /*

  11. * detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

  12. * cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、

  13. * JChardetFacade、ASCIIDetector、UnicodeDetector。

  14. * detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  15. * 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  16. * cpDetector是基于统计学原理的,不保证完全正确。

  17. */

  18. CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

  19. /*

  20. * ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

  21. * 指示是否显示探测过程的详细信息,为false不显示。

  22. */

  23. detector.add(new ParsingDetector(false));

  24. /*

  25. * JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  26. * 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  27. * 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

  28. */

  29. detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

  30. // ASCIIDetector用于ASCII编码测定

  31. detector.add(ASCIIDetector.getInstance());

  32. // UnicodeDetector用于Unicode家族编码的测定

  33. detector.add(UnicodeDetector.getInstance());

  34. java.nio.charset.Charset charset = null;

  35. try {

  36. charset = detector.detectCodepage(url);

  37. } catch (Exception ex) {

  38. ex.printStackTrace();

  39. }

  40. if (charset != null)

  41. return charset.name();

  42. else

  43. return null;

  44. }

/**

  • 利用第三方开源包cpdetector获取URL对应的文件编码

  • @param path

  •        要判断文件编码格式的源文件的URL
    
  • @author huanglei

  • @version 2012-7-12 14:05

*/

public static String getFileEncode(URL url) {

/*

  • detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

  • cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、

  • JChardetFacade、ASCIIDetector、UnicodeDetector。

  • detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  • 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  • cpDetector是基于统计学原理的,不保证完全正确。

*/

CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

/*

  • ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

  • 指示是否显示探测过程的详细信息,为false不显示。

*/

detector.add(new ParsingDetector(false));

/*

  • JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  • 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  • 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

*/

detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

// ASCIIDetector用于ASCII编码测定

detector.add(ASCIIDetector.getInstance());

// UnicodeDetector用于Unicode家族编码的测定

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset = null;

try {

charset = detector.detectCodepage(url);

} catch (Exception ex) {

ex.printStackTrace();

}

if (charset != null)

return charset.name();

else

return null;

}

[java] view plain copy print ?

  1. URL url = CreateStationTreeModel.class.getResource(“/resource/” + “配置文件”);

  2. URLConnection urlConnection = url.openConnection();

  3. inputStream=urlConnection.getInputStream();

  4. String charsetName = getFileEncode(url);

  5. System.out.println(charsetName);

  6. BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

URL url = CreateStationTreeModel.class.getResource(“/resource/” + “配置文件”);

URLConnection urlConnection = url.openConnection();

inputStream=urlConnection.getInputStream();

String charsetName = getFileEncode(url);

System.out.println(charsetName);

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

3:探测任意输入的文本流的编码,方法是调用其重载形式:

[java] view plain copy print ?

  1. charset=detector.detectCodepage(待测的文本输入流,测量该流所需的读入字节数);

charset=detector.detectCodepage(待测的文本输入流,测量该流所需的读入字节数);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以加一下下面的技术群来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

这里放一下资料获取方式:GitHub

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以加一下下面的技术群来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

这里放一下资料获取方式:GitHub

[外链图片转存中…(img-r0duXWfA-1710900076389)]

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

[外链图片转存中…(img-ktaNcj16-1710900076389)]

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值