ASCII、Unicode、UTF-8

在計算機中,全部信息最終都能以二進制字符串來表示。二進制位又叫作比特(bit),每一個比特有0和1兩種狀態,8個比特構成了1個字節(byte),1個字節能夠表示256種狀態。html

ASCII

ASCII碼一共規定了128個字符的編碼,這128個符號(包括32個不能打印出來的控制符號),只佔用了一個字節的後7位,最前面的1位統一爲0。編碼

Unicode

Unicode是一個容納了上百萬字符的字符集,規定了每一個字符的二進制代碼。可是沒有制定具體的存儲規則,例如當用3個字節存儲一個字符時,它同時能夠被理解爲存儲了3個ASCII碼,另外咱們都知道ASCII碼是用1個字節存儲,當規定用3個字節存儲字符時,就形成了空間的極大浪費。
Unicode同時也兼容了ASCII碼。code

UTF-8

UTF-8是實現了Unicode的方式之一,特色是變長編碼,它使用1-4個字節表示一個符號。htm

編碼規則:blog

  1. 對於單字節的符號,字節的第一位設爲0,後面7位爲這個符號的unicode碼。所以對於英語字母,UTF-8編碼和ASCII碼是相同的。
  2. 對於n字節的符號(n>1),第一個字節的前n位都設爲1,第n+1位設爲0,後面字節的前兩位一概設爲10。剩下的沒有說起的二進制位,所有爲這個符號的unicode碼。

總結爲下表,x表示字符utf-8

Unicode符號範圍 | UTF-8編碼方式
(十六進制) | (二進制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

例:
「嚴」字的Unicode編碼爲100111000100101,用十六進制表示爲U+4E25,處在上表的第三行。換成UTF-8則須要3個字節,二進制代碼爲11100100 10111000 10100101,轉換成十六進制爲E4B8A5。ci

參考:http://www.ruanyifeng.com/blo...unicode

相關文章
相關標籤/搜索