亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

借助JCharDet獲取文件字符集

2019-11-14 22:18:59
字體:
來源:轉載
供稿:網友
借助JCharDet獲取文件字符集

前段時間,在學習lucene的時候,遇到了讀取txt文檔遇到編碼錯誤的問題。學了幾個解決方案,大部分是將文件轉十六進制(可以使用UE的Ctrl+H來查看),讀取開頭的四個標志位來判斷??墒强傆行┪谋疚募o法識別(我遇到的是部分使用UTF-8編碼的文件),后來發現了JCharDet。JCharDet是mozilla(就是Firefox那家)的編碼識別算法的java實現,算了,這里是官網,自己看吧。

上代碼:

package com.zhyea.util;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import org.mozilla.intl.chardet.nsDetector;import org.mozilla.intl.chardet.nsICharsetDetectionObserver;/** * 借助JCharDet獲取文件字符集 *  * @author robin *  */public class FileCharsetDetector {    /**     * 字符集名稱     */    PRivate static String encoding;        /**     * 字符集是否已檢測到     */    private static boolean found;        private static nsDetector detector;        private static nsICharsetDetectionObserver observer;    /**     * 適應語言枚舉     * @author robin     *     */    enum Language{        Japanese(1),        Chinese(2),        SimplifiedChinese(3),        TraditionalChinese(4),         Korean(5),         DontKnow(6);                private int hint;                Language(int hint){            this.hint = hint;        }                public int getHint(){            return this.hint;        }    }        /**     * 傳入一個文件(File)對象,檢查文件編碼     *      * @param file     *            File對象實例     * @return 文件編碼,若無,則返回null     * @throws FileNotFoundException     * @throws IOException     */    public static String checkEncoding(File file) throws FileNotFoundException,            IOException {        return checkEncoding(file, getNsdetector());    }    /**     * 獲取文件的編碼     *      * @param file     *            File對象實例     * @param language     *            語言     * @return 文件編碼     * @throws FileNotFoundException     * @throws IOException     */    public static String checkEncoding(File file, Language lang)            throws FileNotFoundException, IOException {        return checkEncoding(file, new nsDetector(lang.getHint()));    }    /**     * 獲取文件的編碼     *      * @param path     *            文件路徑     * @return 文件編碼,eg:UTF-8,GBK,GB2312形式,若無,則返回null     * @throws FileNotFoundException     * @throws IOException     */    public static String checkEncoding(String path) throws FileNotFoundException,            IOException {        return checkEncoding(new File(path));    }    /**     * 獲取文件的編碼     *      * @param path     *            文件路徑     * @param language     *                 語言     * @return     * @throws FileNotFoundException     * @throws IOException     */    public static String checkEncoding(String path, Language lang)            throws FileNotFoundException, IOException {        return checkEncoding(new File(path), lang);    }    /**     * 獲取文件的編碼     *      * @param file     * @param det     * @return     * @throws FileNotFoundException     * @throws IOException     */    private static String checkEncoding(File file, nsDetector detector)            throws FileNotFoundException, IOException {                detector.Init(getCharsetDetectionObserver());                if (isAscii(file, detector)) {            encoding = "ASCII";            found = true;        }        if (!found) {            String prob[] = detector.getProbableCharsets();            if (prob.length > 0) {                encoding = prob[0];            } else {                return null;            }        }                return encoding;    }        /**     * 檢查文件編碼類型是否是ASCII型     * @param file     *             要檢查編碼的文件     * @param detector     * @return     * @throws IOException     */    private static boolean isAscii(File file, nsDetector detector) throws IOException{        BufferedInputStream input = null;        try{            input = new BufferedInputStream(new FileInputStream(file));                        byte[] buffer = new byte[1024];            int hasRead;            boolean done = false;            boolean isAscii = true;            while ((hasRead=input.read(buffer)) != -1) {                if (isAscii)                    isAscii = detector.isAscii(buffer, hasRead);                if (!isAscii && !done)                    done = detector.DoIt(buffer, hasRead, false);            }                        return isAscii;        }finally{            detector.DataEnd();            if(null!=input)input.close();        }    }        /**     * nsDetector單例創建     * @return     */    private static nsDetector getNsdetector(){        if(null == detector){            detector = new nsDetector();        }        return detector;    }        /**     * nsICharsetDetectionObserver 單例創建     * @return     */    private static nsICharsetDetectionObserver getCharsetDetectionObserver(){        if(null==observer){            observer = new nsICharsetDetectionObserver() {                public void Notify(String charset) {                    found = true;                    encoding = charset;                }            };        }        return observer;    }}

這個還存一個問題,就是識別Unicode編碼的文件,會返回windows-1252。我使用windows-1252作為編碼的時候會報錯。

對了,再提供一個這個jar包下載的地址,官網有時會抽風,不能訪問。

下載地址:http://download.csdn.net/detail/tianxiexingyun/8286849

就這樣。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲女人天堂av| 日本三级久久久| 尤物九九久久国产精品的分类| 亚洲新中文字幕| 国产精品成人aaaaa网站| 国产精品久久久久77777| 欧美区在线播放| 91av国产在线| 久久国产精品久久国产精品| 国产精品偷伦视频免费观看国产| 日韩欧美国产黄色| 亚洲成年网站在线观看| 欧美肥老太性生活视频| 91av在线视频观看| 青青久久aⅴ北条麻妃| 亚洲电影成人av99爱色| 97视频在线免费观看| 亚洲欧洲国产一区| 日韩欧美在线免费观看| 少妇高潮 亚洲精品| 欧美剧在线观看| 九九九久久国产免费| 成人精品在线视频| 亚洲天堂网在线观看| 国产日韩中文在线| 色综合老司机第九色激情| 亚洲精品一区av在线播放| 黑人巨大精品欧美一区二区免费| 日韩精品中文字幕视频在线| 欧美成人免费视频| 国产精品久久久久久久久久小说| 国产成人精彩在线视频九色| 欧美成人四级hd版| 欧美成人在线免费| 第一福利永久视频精品| 国产日韩在线看片| 国产香蕉一区二区三区在线视频| 久久福利网址导航| 深夜福利国产精品| 美日韩精品免费观看视频| 日韩欧美成人免费视频| 国内免费精品永久在线视频| 国内伊人久久久久久网站视频| 国产精品久久婷婷六月丁香| 日韩电视剧在线观看免费网站| 亚洲天堂免费在线| 亚洲一区中文字幕在线观看| 亚洲精品一区av在线播放| 在线视频免费一区二区| 国产亚洲精品高潮| 欧美激情欧美激情| 久久久久久69| 日韩欧美中文字幕在线播放| 国产精品久久久久久久久免费| 国产精品极品美女粉嫩高清在线| 国产精品手机播放| 亚洲欧美日韩一区在线| 亚洲视频国产视频| 精品久久久av| 国产97免费视| 国产精品露脸自拍| 亚洲理论电影网| 国产精品久久久久久久久久久不卡| 久久av红桃一区二区小说| 在线精品高清中文字幕| 亚洲午夜女主播在线直播| 久久网福利资源网站| 久久久久久国产| 欧美综合激情网| 久久人人爽人人爽人人片av高清| 91精品免费久久久久久久久| 欧美最近摘花xxxx摘花| 97国产精品人人爽人人做| 日韩美女视频免费看| 亚洲视频国产视频| 国产日韩欧美成人| 欧美性少妇18aaaa视频| 一区二区在线视频| 亚洲精品免费在线视频| 欧美人与性动交a欧美精品| 欧美伊久线香蕉线新在线| 2018国产精品视频| 欧美精品18videosex性欧美| 色老头一区二区三区| 欧美视频中文在线看| 中文字幕9999| 欧美日韩午夜剧场| 亚洲天堂av在线免费观看| 奇米4444一区二区三区| 欧洲成人在线视频| 中文字幕日韩欧美精品在线观看| 欧美天堂在线观看| 久久久成人的性感天堂| 亚洲肉体裸体xxxx137| 欧美夫妻性生活视频| 国产精品视频精品| 正在播放亚洲1区| 国产成人亚洲综合青青| 一区二区三区四区视频| 亚洲自拍在线观看| 最近2019年手机中文字幕| 日韩欧美极品在线观看| 国产精品国产亚洲伊人久久| 国产精品国产自产拍高清av水多| 国产一区二区三区网站| 国产mv免费观看入口亚洲| 欧美日本国产在线| 精品免费在线观看| 一区三区二区视频| 日韩av在线播放资源| 欧美视频在线看| 亚洲男女自偷自拍图片另类| 久久6免费高清热精品| 国产成人jvid在线播放| 亚洲色图欧美制服丝袜另类第一页| 亚洲男人7777| 欧美丝袜一区二区三区| 欧美日韩免费区域视频在线观看| 91免费的视频在线播放| 精品国产户外野外| 久久久亚洲网站| 亚洲电影在线观看| 欧美亚洲视频一区二区| 免费91麻豆精品国产自产在线观看| 中文字幕在线观看亚洲| 国产精品日韩欧美综合| 欧美在线激情视频| 亚洲精品国产精品国自产在线| 中文在线资源观看视频网站免费不卡| 欧美色欧美亚洲高清在线视频| 久久夜精品va视频免费观看| 日韩欧美国产一区二区| 国产欧美精品va在线观看| 亚洲自拍偷拍福利| 欧美日韩在线免费| 色妞欧美日韩在线| 久久精品亚洲94久久精品| 国产精品影片在线观看| 成人黄色大片在线免费观看| 亚洲精品自拍第一页| 亚洲在线视频观看| 国产成人福利网站| 91久久国产精品| 亚洲欧美精品伊人久久| 亚洲国产精品999| 久久久日本电影| 国产精品成人久久久久| 久久久久久69| 国产在线观看91精品一区| 色午夜这里只有精品| 国产精品一区久久久| 欧美成人免费大片| 久久国产精品电影| 疯狂欧美牲乱大交777| 国产精品日日摸夜夜添夜夜av| 91成品人片a无限观看| 久久久久国产精品一区| 国外成人在线直播| 欧亚精品中文字幕| 国产精品视频在线观看| 亚洲综合第一页| 欧美亚洲第一区| 日韩视频一区在线| 成人激情视频在线|