栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java判断文件编码的方式——使用第三方库cpdetector

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java判断文件编码的方式——使用第三方库cpdetector

问题背景

我在使用Java开发一款音乐播放器,有个功能是读取本地lrc文件作为歌词,然而它们的编码方式不同,导致有的文件读取出来乱码,因此我需要能够在读取文件时判断编码的方法。

解决过程

网上有一个比较火的库——cpdetector,我先去maven远程仓库搜了一下,引入了依赖

但是在重新导入时提示找不到包,错误信息如下

找原因:看到下面一排小字,应该是说需要到对应的官网下载jar才能使用

来到官网https://sourceforge.net/projects/cpdetector/files/后下载了一个压缩包,将所有红框中的包放到项目的libs文件夹下



然后手动将这3个jar包添加到Maven中并刷新一下就可以使用了



    cpdetector
    cpdetector
    1.0.10
    system
    ${basedir}/libs/cpdetector_1.0.10.jar




    chardet
    chardet
    1.0
    system
    ${basedir}/libs/chardet-1.0.jar




    antlr
    antlr
    2.7.4
    system
    ${basedir}/libs/antlr-2.7.4.jar

具体使用代码示例如下,逻辑很简单

public static String getCharsetName(File file) throws IOException {
    String charsetName = "UTF-8";
    // 获取 CodepageDetectorProxy 实例
    CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
    // 添加解析器,会使用到添加的后 2 个 ext 里的 jar 包
    detector.add(new ParsingDetector(false));
    detector.add(JChardetFacade.getInstance());
    detector.add(ASCIIDetector.getInstance());
    detector.add(UnicodeDetector.getInstance());
    Charset charset = detector.detectCodepage(file.toURI().toURL());
    if (charset != null) charsetName = charset.name();
    return charsetName;
}

探测的结果还是挺准确的,比网上的某些代码准多了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690666.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号