ASCII、Unicode、UTF-8

在計算機中,所有信息最終都能以二進制字符串來表示。二進制位又叫做比特(bit),每個比特有0和1兩種狀態(tài),8個比特構(gòu)成了1個字節(jié)(byte),1個字節(jié)可以表示256種狀態(tài)。

ASCII

ASCII碼一共規(guī)定了128個字符的編碼,這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節(jié)的后7位,最前面的1位統(tǒng)一為0。

Unicode

Unicode是一個容納了上百萬字符的字符集,規(guī)定了每個字符的二進制代碼。但是沒有制定具體的存儲規(guī)則,例如當(dāng)用3個字節(jié)存儲一個字符時,它同時可以被理解為存儲了3個ASCII碼,另外我們都知道ASCII碼是用1個字節(jié)存儲,當(dāng)規(guī)定用3個字節(jié)存儲字符時,就造成了空間的極大浪費。
Unicode同時也兼容了ASCII碼。

UTF-8

UTF-8是實現(xiàn)了Unicode的方式之一,特點是變長編碼,它使用1-4個字節(jié)表示一個符號。

編碼規(guī)則:

  1. 對于單字節(jié)的符號,字節(jié)的第一位設(shè)為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。
  2. 對于n字節(jié)的符號(n>1),第一個字節(jié)的前n位都設(shè)為1,第n+1位設(shè)為0,后面字節(jié)的前兩位一律設(shè)為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。

總結(jié)為下表,x表示字符

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

例:
“嚴(yán)”字的Unicode編碼為100111000100101,用十六進制表示為U+4E25,處在上表的第三行。換成UTF-8則需要3個字節(jié),二進制代碼為11100100 10111000 10100101,轉(zhuǎn)換成十六進制為E4B8A5。

參考:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ASCII,Unicode,utf-8等字符編碼學(xué)習(xí)筆記 學(xué)習(xí)自阮一峰的網(wǎng)絡(luò)日志,地址http://www.rua...
    KevinCool閱讀 794評論 0 0
  • 卷二十四,漢紀(jì)十六。時間公元前74年至公元前68年。主要故事有:立廢昌邑王,漢宣帝即位,霍光之死等等。 1、立廢昌...
    賈海昕閱讀 288評論 0 2
  • jianzi閱讀 202評論 0 0
  • 爸比, 今天父親節(jié),手機終于到你手中了,順豐還是靠譜的,現(xiàn)在天黑了我的飛機晚點,不然還能給你打給電話,寫個明信片,...
    糊吹吹閱讀 291評論 0 1
  • 這里的老大是少壯不努力老大徒傷悲里的老大,意思是上年紀(jì)了。美國老大說指的卻不是美國由于建國時間太長的意思,而是美國...
    何二的李斯閱讀 483評論 0 0

友情鏈接更多精彩內(nèi)容