<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 5,  comments - 6,  trackbacks - 0

    首先閱讀此文之前,最好閱讀
    http://hi.baidu.com/maml897/blog/item/324bf86369961ed4e6113a5c.html

    http://hi.baidu.com/maml897/blog/item/fa5f0a7e1edef00129388ae2.html

    其次還要知道一點常識,就是我們在記事本等一些文本工具中 寫的都是字符,沒有誰會去寫字節(jié)(可以寫字節(jié),但是要用具特殊的編輯器),但是其實,我們的寫的是字符,但磁盤上真實存儲的是字節(jié)。

    這里就出現了轉換的問題,當然,這些問題記事本本身會幫助我們解決。我們打開一個記事本,然后文件--另存為,你會發(fā)現有幾種存儲格式供您選擇,
    ANSI格式:就是ascii的格式
    Unicode格式:采用國際通用的編碼存儲
    Unicode big endian格式:這個和unicode有點區(qū)別,但我也不明太具體的不同
    UTF-8:采用utf-8存儲,看過上面的兩篇文章,你會十分的了解這里介紹的編碼。Utf-8,是unicode的一種實現方式。

    例如我們在記事本里面輸入“連通”兩個字。

    1.我們另存記事本的時候,采用unicode存儲,那么雖然我們看到的字符還是“連通”,但是其實存儲在磁盤上的字節(jié) 確實
    8FDE(連) 901A (通),這個是規(guī)定的,unicode是國際上規(guī)定的,給世界上的每個字符分配的唯一編碼。獲取某個字符的unicode的方法,可以去網上查找,最簡單的方法,就是打開word文檔,輸入字符,把光標移動到字符后面,按alt+x,word會自動把字符轉換成unicode編碼,這里呢我們也可以看到,用unicode存儲漢字啊,每個漢字占用兩個字節(jié)。

    2.我們另存記事本的時候,采用utf-8存儲,雖然我們看到的字符還是“連通”,但是其實存儲在磁盤上的字節(jié) 確實已經變化了,這時候存儲的是
    E8 BF 9E (連)E9 80 9A(通)。這就是utf-8的存儲的編碼,至于utf-8為什么這樣存儲,你可以閱讀上面的兩篇文章來了解,可以看到,utf-8使用3個字節(jié)存儲一個漢字。

    另外我們還要知道的就是:電腦怎么區(qū)分一個記事本是用什么存儲的呢?
    換句話說,為什么我用unicode存儲的8FDE(連) 901A (通),電腦就知道這是unicode編碼,從而使用unicode解碼,還原為“連通”呢?電腦又怎么知道E8 BF 9E (連)E9 80 9A(通)這是按照utf-8的存儲方式存儲的呢?

    這里有一點標記,就是在存儲字節(jié)的時候,記事本首先在最前面 標明,這個記事本下面的存儲格式 是utf-8,還是unicode。

    例如,

    1.unicode存儲“連通”。磁盤字節(jié)真實存儲的其實是:

    FF FE 8FDE 901A

    前兩個FF FE是標記,告訴電腦,這個文檔的存儲方式是unicode

    2.utf-8存儲“連通”。磁盤字節(jié)真實存儲的其實是:

    EF BB BF E8 BF 9E E9 80 9A

    前三個EF BB BF 告訴電腦 這個文檔是utf-8存儲的

    根據不同編碼的特點和標志,對一個文本文件判斷編碼方法如下
    1  .  UTF7  所有字節(jié)的內容不會大于127,也就是不大于&HFF
    2  .  UTF8  起始三個字節(jié)為"0xEF 0xBB 0xBF"
    3  .  UTF-16BE 起始三個字節(jié)為"0xFE  0xFF"
    4  .  UTF-16LE 起始三個字節(jié)為"0xFF  0xFE"


    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)// 雙字節(jié) (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("F://鎖表1.sql");
            System.out.println(fer.getCharset());
        }

    }

    posted on 2010-01-10 19:56 潯陽江頭夜送客 閱讀(400) 評論(0)  編輯  收藏 所屬分類: java

    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    <2010年1月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    myeclipse6.5上基于JAX-WS開發(fā)Webservice(中文示例)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 毛片免费视频在线观看| 亚洲日产韩国一二三四区| 新最免费影视大全在线播放| 在线观看国产区亚洲一区成人| 人妻无码一区二区三区免费| 亚洲国产精品美女久久久久| 精品国产综合成人亚洲区| 女人18毛片免费观看| 免费在线观影网站| 亚洲人成自拍网站在线观看| 国产亚洲美女精品久久久久狼| av无码国产在线看免费网站| 亚欧洲精品在线视频免费观看| 亚洲国产精品日韩在线| 精品亚洲一区二区三区在线观看 | 亚洲精品自偷自拍无码| 国产亚洲精AA在线观看SEE| 在线播放高清国语自产拍免费| a级毛片免费全部播放无码| 亚洲精品国产精品| 97久久精品亚洲中文字幕无码| 国产91在线免费| 日本一区二区三区免费高清| 精品一区二区三区免费| 羞羞视频在线免费观看| 亚洲国产成人精品无码一区二区| 中文字幕第一页亚洲| 日本xxwwxxww在线视频免费 | 日韩一级视频免费观看| 精品久久8x国产免费观看| 一级做a爰片久久毛片免费看| 亚洲中文字幕一二三四区苍井空| 国产亚洲无线码一区二区| 亚洲Av无码乱码在线观看性色| 最近2019中文字幕免费看最新| 日韩在线永久免费播放| 精品一区二区三区高清免费观看 | 污视频网站免费观看| 亚洲综合在线一区二区三区| 久久久亚洲AV波多野结衣| 亚洲精品狼友在线播放|