一個英文字母字符存儲需要1個字節。在 GB 2312 編碼或 GBK 編碼中,一個漢字字符存儲需要2個字節。 在UTF-8編碼中,一個英文字母字符存儲需要1個字節,一個漢字字符儲存需要3到4個字節。在UTF-16編碼中,一個英文字母字符或一個漢字字符存儲 都需要2個字節(Unicode擴展區的一些漢字存儲需要4個字節)。在UTF-32編碼中,世界上任何字符的存儲都需要4個字節。
其次還要知道一點常識,就是我們在記事本等一些文本工具中 寫的都是字符,沒有誰會去寫字節(可以寫字節,但是要用具特殊的編輯器),但是其實,我們的寫的是字符,但磁盤上真實存儲的是字節。
這里就出現了轉換的問題,當然,這些問題記事本本身會幫助我們解決。我們打開一個記事本,然后文件--另存為,你會發現有幾種存儲格式供您選擇,
ANSI格式:就是ascii的格式
Unicode格式:采用國際通用的編碼存儲
Unicode big endian格式:這個和unicode有點區別,但我也不明太具體的不同
UTF-8:采用utf-8存儲,看過上面的兩篇文章,你會十分的了解這里介紹的編碼。Utf-8,是unicode的一種實現方式。
例如我們在記事本里面輸入“連通”兩個字。
1.我們另存記事本的時候,采用unicode存儲,那么雖然我們看到的字符還是“連通”,但是其實存儲在磁盤上的字節 確實
8FDE(連) 901A (通),這個是規定的,unicode是國際上規定的,給世界上的每個字符分配的唯一編碼。獲取某個字符的unicode的方法,可以去網上查找,最簡單 的方法,就是打開word文檔,輸入字符,把光標移動到字符后面,按alt+x,word會自動把字符轉換成unicode編碼,這里呢我們也可以看到, 用unicode存儲漢字啊,每個漢字占用兩個字節。
2.我們另存記事本的時候,采用utf-8存儲,雖然我們看到的字符還是“連通”,但是其實存儲在磁盤上的字節 確實已經變化了,這時候存儲的是
E8 BF 9E (連)E9 80 9A(通)。這就是utf-8的存儲的編碼,至於utf-8為什么這樣存儲,你可以閱讀上面的兩篇文章來了解,可以看到,utf-8使用3個字節存儲一個漢字。
另外我們還要知道的就是:電腦怎么區分一個記事本是用什么存儲的呢?
換句話說,為什么我用unicode存儲的8FDE(連) 901A (通),電腦就知道這是unicode編碼,從而使用unicode解碼,還原為“連通”呢?電腦又怎么知道E8 BF 9E (連)E9 80 9A(通)這是按照utf-8的存儲方式存儲的呢?
這里有一點標記,就是在存儲字節的時候,記事本首先在最前面 標明,這個記事本下面的存儲格式 是utf-8,還是unicode。
例如,
1.unicode存儲“連通”。磁盤字節真實存儲的其實是:
FF FE 8FDE 901A
前兩個FF FE是標記,告訴電腦,這個文檔的存儲方式是unicode
2.utf-8存儲“連通”。磁盤字節真實存儲的其實是:
EF BB BF E8 BF 9E E9 80 9A
前三個EF BB BF 告訴電腦 這個文檔是utf-8存儲的