夢幻之旅

          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 閱讀(1214) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 南召县| 永城市| 新干县| 阳新县| 鲁山县| 博白县| 岱山县| 石棉县| 新昌县| 沙田区| 金堂县| 五家渠市| 张掖市| 凯里市| 林州市| 涞源县| 类乌齐县| 漳平市| 江北区| 黄骅市| 资源县| 乌什县| 武汉市| 拜城县| 蛟河市| 许昌市| 且末县| 阿城市| 东兴市| 彰化县| 房产| 手游| 铜川市| 永德县| 普兰县| 桃江县| 商丘市| 广宗县| 古交市| 保山市| 丹江口市|