夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          BufferedReader br = new BufferedReader(new UnicodeReader(in, Charset.defaultCharset().name())); 



          import java.io.*;

          public class UnicodeReader extends Reader {
            PushbackInputStream internalIn;
            InputStreamReader   internalIn2 
          = null;
            String              defaultEnc;

            
          private static final int BOM_SIZE = 4;

            
            UnicodeReader(InputStream in, String defaultEnc) 
          {
               internalIn 
          = new PushbackInputStream(in, BOM_SIZE);
               
          this.defaultEnc = defaultEnc;
            }


            
          public String getDefaultEncoding() {
               
          return defaultEnc;
            }


            
            
          public String getEncoding() {
               
          if (internalIn2 == nullreturn null;
               
          return internalIn2.getEncoding();
            }


            
            
          protected void init() throws IOException {
               
          if (internalIn2 != nullreturn;

               String encoding;
               
          byte bom[] = new byte[BOM_SIZE];
               
          int n, unread;
               n 
          = internalIn.read(bom, 0, bom.length);

               
          if ( (bom[0== (byte)0x00&& (bom[1== (byte)0x00&&
                           (bom[
          2== (byte)0xFE&& (bom[3== (byte)0xFF) ) {
                  encoding 
          = "UTF-32BE";
                  unread 
          = n - 4;
               }
           else if ( (bom[0== (byte)0xFF&& (bom[1== (byte)0xFE&&
                           (bom[
          2== (byte)0x00&& (bom[3== (byte)0x00) ) {
                  encoding 
          = "UTF-32LE";
                  unread 
          = n - 4;
               }
           else if (  (bom[0== (byte)0xEF&& (bom[1== (byte)0xBB&&
                     (bom[
          2== (byte)0xBF) ) {
                  encoding 
          = "UTF-8";
                  unread 
          = n - 3;
               }
           else if ( (bom[0== (byte)0xFE&& (bom[1== (byte)0xFF) ) {
                  encoding 
          = "UTF-16BE";
                  unread 
          = n - 2;
               }
           else if ( (bom[0== (byte)0xFF&& (bom[1== (byte)0xFE) ) {
                  encoding 
          = "UTF-16LE";
                  unread 
          = n - 2;
               }
           else {
                  
          // Unicode BOM mark not found, unread all bytes
                  encoding = defaultEnc;
                  unread 
          = n;
               }
              
               
          //System.out.println("read=" + n + ", unread=" + unread);

               
          if (unread > 0) internalIn.unread(bom, (n - unread), unread);

               
          // Use given encoding
               if (encoding == null{
                  internalIn2 
          = new InputStreamReader(internalIn);
               }
           else {
                  internalIn2 
          = new InputStreamReader(internalIn, encoding);
               }

            }


            
          public void close() throws IOException {
               init();
               internalIn2.close();
            }


            
          public int read(char[] cbuf, int off, int len) throws IOException {
               init();
               
          return internalIn2.read(cbuf, off, len);
            }


          }
          posted on 2012-04-20 15:28 HUIKK 閱讀(1222) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 行唐县| 岱山县| 新干县| 聂荣县| 乌什县| 东兴市| 太白县| 新巴尔虎左旗| 瓦房店市| 林州市| 平舆县| 六枝特区| 旬阳县| 高雄县| 新宾| 泾阳县| 连州市| 锡林郭勒盟| 宁波市| 义乌市| 元朗区| 凤冈县| 新沂市| 葵青区| 随州市| 新巴尔虎右旗| 禹州市| 金平| 淄博市| 南投市| 上高县| 江油市| 天津市| 三明市| 恩施市| 兰州市| 和田县| 西乌| 丰宁| 墨脱县| 阳泉市|