最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java讀取文件字符集示例方法

 更新時(shí)間:2014年02月24日 09:39:55   作者:  
這篇文章主要介紹了java讀取文件字符集的示例,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

public static String getCharset(File file) {
        String charset = "GBK";
        byte[] first3Bytes = new byte[3];
        try {
            boolean checked = false;
            BufferedInputStream bis = new BufferedInputStream(
                  new FileInputStream(file));
            bis.mark(0);
            int read = bis.read(first3Bytes, 0, 3);
            if (read == -1)
                return charset;
            if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
                charset = "UTF-16LE";
                checked = true;
            } else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1]
                == (byte) 0xFF) {
                charset = "UTF-16BE";
                checked = true;
            } else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1]
                    == (byte) 0xBB
                    && first3Bytes[2] == (byte) 0xBF) {
                charset = "UTF-8";
                checked = true;
            }
            bis.reset();
            if (!checked) {
                int loc = 0;
                while ((read = bis.read()) != -1) {
                    loc++;
                    if (read >= 0xF0)
                        break;
                    //單獨(dú)出現(xiàn)BF以下的,也算是GBK
                    if (0x80 <= read && read <= 0xBF)
                        break;
                    if (0xC0 <= read && read <= 0xDF) {
                        read = bis.read();
                        if (0x80 <= read && read <= 0xBF)// 雙字節(jié) (0xC0 - 0xDF)
                            // (0x80 -
                            // 0xBF),也可能在GB編碼內(nèi)
                            continue;
                        else
                            break;
                     // 也有可能出錯(cuò),但是幾率較小
                    } else if (0xE0 <= read && read <= 0xEF) {
                        read = bis.read();
                        if (0x80 <= read && read <= 0xBF) {
                            read = bis.read();
                            if (0x80 <= read && read <= 0xBF) {
                                charset = "UTF-8";
                                break;
                            } else
                                break;
                        } else
                            break;
                    }
                }
                System.out.println(loc + " " + Integer.toHexString(read));
            }
            bis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return charset;
    }

相關(guān)文章

  • Java微服務(wù)實(shí)戰(zhàn)項(xiàng)目尚融寶接口創(chuàng)建詳解

    Java微服務(wù)實(shí)戰(zhàn)項(xiàng)目尚融寶接口創(chuàng)建詳解

    這篇文章主要介紹了Java微服務(wù)實(shí)戰(zhàn)項(xiàng)目尚融寶的接口創(chuàng)建流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java源碼解析之TypeVariable詳解

    Java源碼解析之TypeVariable詳解

    這篇文章主要介紹了Java源碼解析之TypeVariable詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • SSM框架實(shí)現(xiàn)分頁和搜索分頁的示例代碼

    SSM框架實(shí)現(xiàn)分頁和搜索分頁的示例代碼

    本篇文章主要介紹了SSM框架實(shí)現(xiàn)分頁和搜索分頁的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Jmeter實(shí)現(xiàn)Base64編碼的兩種方式

    Jmeter實(shí)現(xiàn)Base64編碼的兩種方式

    這篇文章主要介紹了Jmeter實(shí)現(xiàn)Base64編碼,大家都知道Jmeter實(shí)現(xiàn)Base64編碼有兩種方式,本文通過圖文并茂的形式把每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 詳解Java線程編程中的volatile關(guān)鍵字的作用

    詳解Java線程編程中的volatile關(guān)鍵字的作用

    這篇文章主要介紹了Java線程編程中的volatile關(guān)鍵字的作用,針對(duì)其禁止進(jìn)行指令重排序和讀寫內(nèi)存方面著重講解,需要的朋友可以參考下
    2015-12-12
  • java中獲取json的所有key方法

    java中獲取json的所有key方法

    下面小編就為大家分享一篇java中獲取json的所有key方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下)

    Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下),與之相對(duì)有(上),想了解的朋友可以去本網(wǎng)站掃搜,在這兩篇文章里涵蓋關(guān)于八大排序算法的所有內(nèi)容,需要的朋友可以參考下
    2023-01-01
  • SpringSession會(huì)話管理之Redis與JDBC存儲(chǔ)實(shí)現(xiàn)方式

    SpringSession會(huì)話管理之Redis與JDBC存儲(chǔ)實(shí)現(xiàn)方式

    本文將詳細(xì)介紹Spring Session的核心概念、特性以及如何使用Redis和JDBC來實(shí)現(xiàn)會(huì)話存儲(chǔ),幫助開發(fā)者構(gòu)建更加健壯和可擴(kuò)展的應(yīng)用系統(tǒng),希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • @MapperScan注解與@Mapper注解的使用

    @MapperScan注解與@Mapper注解的使用

    這篇文章主要介紹了@MapperScan注解與@Mapper注解的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java多線程 線程組原理及實(shí)例詳解

    Java多線程 線程組原理及實(shí)例詳解

    這篇文章主要介紹了Java多線程 線程組原理及實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

黔江区| 武夷山市| 遂平县| 滨海县| 苍溪县| 临夏县| 桂林市| 柏乡县| 清镇市| 哈巴河县| 东阳市| 秦皇岛市| 桦川县| 中超| 临安市| 茂名市| 江阴市| 台中市| 从化市| 江阴市| 电白县| 行唐县| 会理县| 浠水县| 阳泉市| 牟定县| 惠安县| 航空| 大宁县| 兴文县| 绿春县| 东明县| 北海市| 旬阳县| 临汾市| 嘉祥县| 三河市| 香格里拉县| 齐齐哈尔市| 南丰县| 武鸣县|