• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
              首先,不同編碼的文本,是根據(jù)文本的前兩個(gè)字節(jié)來(lái)定義其編碼格式的。定義如下:

              ANSI:        無(wú)格式定義;
              Unicode:       前兩個(gè)字節(jié)為FFFE;
              Unicode big endian: 前兩字節(jié)為FEFF;  
              UTF-8:        前兩字節(jié)為EFBB; 

              知道了各種編碼格式的區(qū)別,寫(xiě)代碼就容易了.


            1. public static String get_charset( File file ) {   
            2.         String charset = "GBK";   
            3.         byte[] first3Bytes = new byte[3];   
            4.         try {   
            5.             boolean;   
            6.             BufferedInputStream bis = new BufferedInputStream( new FileInputStream( file ) );   
            7.             bis.mark( 0 );   
            8.             int read = bis.read( first3Bytes, 03 );   
            9.             if ( read == -1 ) return charset;   
            10.             if ( first3Bytes[0] == (byte0xFF && first3Bytes[1] == (byte0xFE ) {   
            11.                 charset = "UTF-16LE";   
            12.                 checked = true;   
            13.             }   
            14.             else if ( first3Bytes[0] == (byte0xFE && first3Bytes[1] == (byte0xFF ) {   
            15.                 charset = "UTF-16BE";   
            16.                 checked = true;   
            17.             }   
            18.             else if ( first3Bytes[0] == (byte0xEF && first3Bytes[1] == (byte0xBB && first3Bytes[2] == (byte0xBF ) {   
            19.                 charset = "UTF-8";   
            20.                 checked = true;   
            21.             }   
            22.             bis.reset();   
            23.             if ( !checked ) {   
            24.             //    int len = 0;   
            25.                 int loc = 0;   
            26.   
            27.                 while ( (read = bis.read()) != -1 ) {   
            28.                     loc++;   
            29.                     if ( read >= 0xF0 ) break;   
            30.                     if ( 0x80 <= read && read <= 0xBF ) // 單獨(dú)出現(xiàn)BF以下的,也算是GBK   
            31.                     break;   
            32.                     if ( 0xC0 <= read && read <= 0xDF ) {   
            33.                         read = bis.read();   
            34.                         if ( 0x80 <= read && read <= 0xBF ) // 雙字節(jié) (0xC0 - 0xDF) (0x80   
            35.                                                                         // - 0xBF),也可能在GB編碼內(nèi)   
            36.                         continue;   
            37.                         else break;   
            38.                     }   
            39.                     else if ( 0xE0 <= read && read <= 0xEF ) {// 也有可能出錯(cuò),但是幾率較小   
            40.                         read = bis.read();   
            41.                         if ( 0x80 <= read && read <= 0xBF ) {   
            42.                             read = bis.read();   
            43.                             if ( 0x80 <= read && read <= 0xBF ) {   
            44.                                 charset = "UTF-8";   
            45.                                 break;   
            46.                             }   
            47.                             else break;   
            48.                         }   
            49.                         else break;   
            50.                     }   
            51.                 }   
            52.                 //System.out.println( loc + " " + Integer.toHexString( read ) );   
            53.             }   
            54.   
            55.             bis.close();   
            56.         } catch ( Exception e ) {   
            57.             e.printStackTrace();   
            58.         }   
            59.   
            60.         return charset;   
            61.     }   
            From: http://ajava.org/code/I18N/14816.html
            posted on 2009-11-04 15:03 逛奔的蝸牛 閱讀(4519) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Java
            精品综合久久久久久97超人| 亚洲精品综合久久| 久久无码人妻一区二区三区| 无码精品久久久久久人妻中字| 欧美一区二区三区久久综| 99久久成人18免费网站| 亚洲国产一成久久精品国产成人综合 | 久久久SS麻豆欧美国产日韩| 亚洲精品无码成人片久久| 91精品国产91久久| 亚洲国产精品一区二区久久hs| 国产精品青草久久久久婷婷| 热久久视久久精品18| 久久久精品免费国产四虎| 久久人妻无码中文字幕| 久久久久久无码国产精品中文字幕 | 久久久久久久久久免免费精品| 久久精品国产免费观看| 国产亚洲精午夜久久久久久| 日产精品久久久久久久| 久久精品亚洲精品国产欧美| 国产精品久久久久影视不卡| 久久精品国产精品亚洲精品| 久久久久99精品成人片三人毛片| 久久人人爽人人爽人人片av高请| 久久亚洲精品无码VA大香大香| 欧美国产成人久久精品| 久久AⅤ人妻少妇嫩草影院| 国内精品久久久久| 91久久婷婷国产综合精品青草| 久久精品无码专区免费青青| 精品久久亚洲中文无码| 久久久久人妻一区二区三区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产精品热久久毛片| 久久亚洲高清观看| 国产精品九九久久免费视频| 久久97久久97精品免视看秋霞| 久久se精品一区精品二区国产| 激情综合色综合久久综合| 久久99精品久久久久久野外|