字符編碼的經常使用種類介紹html
第一種:ASCII碼python
ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言。它是現今最通用的單字節編碼系統,並等同於國際標準ISO/IEC 646。以下圖所示:編程
因爲計算機是美國人發明的,所以,最先只有127個字母被編碼到計算機裏,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱爲ASCII
編碼,好比大寫字母 A
的編碼是65
,小寫字母 a
的編碼是97
。後128個稱爲擴展ASCII碼。編程語言
在這裏,每一位0或者1所佔的空間單位爲bit(比特),這是計算機中最小的表示單位,每8個bit組成一個字符,這是計算機中最小的存儲單位。編碼
常見換算單位:spa
bit 位,計算機中最小的表示單位
操作系統
8bit = 1bytes 字節,最小的存儲單位,1bytes縮寫爲1B
code
1KB=1024B
orm
1MB=1024KB
htm
1GB=1024MB
1TB=1024GB
第二種:GBK 和 GB2312
對於咱們來講能在計算機中顯示中文字符是相當重要的,然而ASCII表裏連一個偏旁部首也沒有。因此咱們還須要一張關於中文和數字對應的關係表。一個字節只能最多表示256個字符,要處理中文顯然一個字節是不夠的,因此咱們須要採用兩個字節來表示,並且還不能和ASCII編碼衝突,因此,中國製定了GB2312編碼,用來把中文編進去。
第三種:Unicode
但如以來,就會出現一個問題,各個國家都一套本身的編碼,就不可避免會有衝突,這是該怎麼辦呢?
所以,Unicode應運而生。Unicode把全部語言都統一到一套編碼裏,這樣就不會再有亂碼問題了。
Unicode標準也在不斷髮展,但最經常使用的是用兩個字節表示一個字符(若是要用到很是偏僻的字符,就須要4個字節)。現代操做系統和大多數編程語言都直接支持Unicode。
如今,分析一下ASCII編碼和Unicode編碼的區別:
ASCII編碼是1個字節,而Unicode編碼一般是2個字節。
字母A用ASCII編碼是十進制的65,二進制的01000001;
字符0用ASCII編碼是十進制的48,二進制的00110000;
漢字「中」已經超出了ASCII編碼的範圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。
若是把ASCII編碼的A用Unicode編碼,只須要在前面補0就能夠,所以,A的Unicode編碼是00000000 01000001。
但若是統一成Unicode編碼,亂碼問題今後消失了。可是,若是你寫的文本基本上所有是英文的話,用Unicode編碼比ASCII編碼須要多一倍的存儲空間,在存儲和傳輸上就十分不划算。
第四種:UTF-8
基於節約的原則,出現了把Unicode編碼轉化爲「可變長編碼」的UTF-8編碼。UTF-8編碼把一個Unicode字符根據不一樣的數字大小編碼成1-6個字節,經常使用的英文字母被編碼成1個字節,漢字一般是3個字節,只有很生僻的字符纔會被編碼成4-6個字節。若是你要傳輸的文本包含大量英文字符,用UTF-8編碼就能節省空間了。以下所示:
從上面的表格還能夠發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上能夠被當作是UTF-8編碼的一部分,因此,大量只支持ASCII編碼的歷史遺留軟件能夠在UTF-8編碼下繼續工做。
咱們總結一下如今計算機系統通用的字符編碼工做方式:
在計算機內存中,統一使用Unicode編碼,當須要保存到硬盤或者須要傳輸的時候,就轉換爲UTF-8編碼。
用記事本編輯的時候,從文件讀取的UTF-8字符被轉換爲Unicode字符到內存裏,編輯完成後,保存的時候再把Unicode轉換爲UTF-8保存到文件。以下圖:
以上內容搬運整理自:https://www.luffycity.com/python-book/di-2-zhang-python-ji-chu-2/23-zi-fu-bian-ma.html