一個英文字母字符存儲須要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的一種實現方式。編碼
例如咱們在記事本里面輸入「連通」兩個字。spa
1.咱們另存記事本的時候,採用unicode存儲,那麼雖然咱們看到的字符仍是「連通」,可是其實存儲在磁盤上的字節 確實
8FDE(連) 901A (通),這個是規定的,unicode是國際上規定的,給世界上的每一個字符分配的惟一編碼。獲取某個字符的unicode的方法,能夠去網上查找,最簡單 的方法,就是打開word文檔,輸入字符,把光標移動到字符後面,按alt+x,word會自動把字符轉換成unicode編碼,這裏呢咱們也能夠看到, 用unicode存儲漢字啊,每一個漢字佔用兩個字節。code
2.咱們另存記事本的時候,採用utf-8存儲,雖然咱們看到的字符仍是「連通」,可是其實存儲在磁盤上的字節 確實已經變化了,這時候存儲的是
E8 BF 9E (連)E9 80 9A(通)。這就是utf-8的存儲的編碼,至於utf-8爲何這樣存儲,你能夠閱讀上面的兩篇文章來了解,能夠看到,utf-8使用3個字節存儲一個漢字。orm
另外咱們還要知道的就是:電腦怎麼區分一個記事本是用什麼存儲的呢?
換句話說,爲何我用unicode存儲的8FDE(連) 901A (通),電腦就知道這是unicode編碼,從而使用unicode解碼,還原爲「連通」呢?電腦又怎麼知道E8 BF 9E (連)E9 80 9A(通)這是按照utf-8的存儲方式存儲的呢?htm
這裏有一點標記,就是在存儲字節的時候,記事本首先在最前面 標明,這個記事本下面的存儲格式 是utf-8,仍是unicode。utf-8
例如,ci
1.unicode存儲「連通」。磁盤字節真實存儲的實際上是: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存儲的