夢幻之旅

          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  回復  更多評論
            

          主站蜘蛛池模板: 灯塔市| 收藏| 永定县| 新龙县| 驻马店市| 安岳县| 大港区| 庆城县| 涡阳县| 咸丰县| 荥经县| 安岳县| 台南县| 专栏| 绥中县| 慈溪市| 桐柏县| 商丘市| 沈阳市| 收藏| 海宁市| 合作市| 全州县| 长葛市| 民和| 章丘市| 江源县| 马山县| 扎赉特旗| 东山县| 犍为县| 赞皇县| 福建省| 南华县| 清水河县| 灵川县| 竹溪县| 余庆县| 博湖县| 平谷区| 双鸭山市|