夢幻之旅

          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
          主站蜘蛛池模板: 泗阳县| 扎鲁特旗| 塘沽区| 马山县| 黄浦区| 岑巩县| 黄山市| 贵港市| 琼中| 赤城县| 祁阳县| 深圳市| 镇安县| 安龙县| 礼泉县| 揭东县| 孝感市| 华容县| 桐庐县| 五常市| 太原市| 馆陶县| 青海省| 丹寨县| 芜湖县| 林芝县| 灵宝市| 西城区| 五指山市| 徐水县| 丰宁| 金湖县| 眉山市| 卓尼县| 肇东市| 苍山县| 遵义市| 祁连县| 师宗县| 巴青县| 兰州市|