夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          package com.roadway.edmail.util;

          import java.io.BufferedInputStream;
          import java.io.File;
          import java.io.FileInputStream;

          public class FileEncodeReferee
          {
              
          private File file;
              
              
          public FileEncodeReferee(File file)
              
          {
                  
          this.file = file;
              }

              
              
          public FileEncodeReferee(String path)
              
          {
                  file 
          = new File(path);
              }

              
              
          public String getCharset()
              
          {
                  File file 
          = this.file;
                  
                  String charset 
          = "GBK";
                  
          byte[] first3Bytes = new byte[3];
                  BufferedInputStream bis 
          = null;
                  
          try
                  
          {
                      
          //boolean checked = false;
                      bis = new BufferedInputStream(new FileInputStream(file));
                      bis.mark(
          0);
                      
          int read = bis.read(first3Bytes, 03);
                      
          if (read == -1)
                      
          {
                          
          return charset;
                      }

                      
          if (first3Bytes[0== (byte0xFF && first3Bytes[1== (byte0xFE)
                      
          {
                          charset 
          = "UTF-16LE";
                          
          //checked = true;
                      }

                      
          else if (first3Bytes[0== (byte0xFE
                              
          && first3Bytes[1== (byte0xFF)
                      
          {
                          charset 
          = "UTF-16BE";
                          
          //checked = true;
                      }

                      
          else if (first3Bytes[0== (byte0xEF
                              
          && first3Bytes[1== (byte0xBB
                              
          && first3Bytes[2== (byte0xBF)
                      
          {
                          charset 
          = "UTF-8";
                          
          //checked = true;
                      }

                      
          /*******************************************************************
                       * bis.reset(); if (!checked) { int loc = 0; while ((read =
                       * bis.read()) != -1) { loc++; if (read >= 0xF0) { break; } if (0x80 <=
                       * read && read <= 0xBF) // 單獨出現BF以下的,也算是GBK { break; } if (0xC0 <=
                       * read && read <= 0xDF) { read = bis.read(); if (0x80 <= read &&
                       * read <= 0xBF)// 雙字節 (0xC0 - 0xDF) { // (0x80 - 0xBF),也可能在GB編碼內
                       * continue; } else { break; } } 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)); }
                       *****************************************************************
          */

                  }

                  
          catch (Exception e)
                  
          {
                      e.printStackTrace();
                  }

                  
          finally
                  
          {
                      
          if (bis != null)
                      
          {
                          
          try
                          
          {
                              bis.close();
                          }

                          
          catch (Exception ex)
                          
          {
                              ex.printStackTrace();
                          }

                      }

                  }

                  
          return charset;
              }

              
              
          public static void main(String[] args)
              
          {
                  FileEncodeReferee fer 
          = new FileEncodeReferee("E://Huha.csv");
                  System.out.println(fer.getCharset());
              }

          }
          posted on 2009-12-07 10:43 HUIKK 閱讀(3658) 評論(2)  編輯  收藏 所屬分類: Java

          評論

          # re: java 判斷文本文件編碼 2010-08-17 11:26 wjm
          你試過嗎???  回復  更多評論
            

          # re: java 判斷文本文件編碼 2014-11-17 20:22 zudaima
          java文件教程源代碼下載:http://zuidaima.com/share/k%E6%96%87%E4%BB%B6-p1-s1.htm  回復  更多評論
            

          主站蜘蛛池模板: 玉山县| 织金县| 周至县| 千阳县| 镇坪县| 张掖市| 永嘉县| 砚山县| 东乌珠穆沁旗| 建瓯市| 安吉县| 广昌县| 枣庄市| 扬州市| 吉安县| 平潭县| 延寿县| 鄂托克旗| 穆棱市| 荃湾区| 宁强县| 南投市| 弥渡县| 东阳市| 温宿县| 福安市| 榕江县| 长宁区| 那坡县| 乳源| 武宁县| 东源县| 铁岭县| 偃师市| 乐东| 阿勒泰市| 巨野县| 芜湖市| 鄄城县| 连城县| 临猗县|