天天看點

python字元編碼ASCII, Unicode, UTF-8

bit, byte

我們先了解下比特bit,位元組byte的概念。比特bit是表示資訊的最小機關,是二進制中位,也就是0或者1。位元組byte是計算機中用于計量存儲容量的計量機關,1位元組等于8位,也就是1 byte = 8 bit,是以可以表示00000000 ~ 11111111,轉化為十進制,1個位元組可以表示0~255的整數

ASCII

ASCII編碼,采用的是1個位元組來表示,是以其最多也就是256個,ASCII編碼前128個數,用來表示:

  • 26個大寫字母
  • 26個小寫字母
  • 0~9的字元數字
  • 常見的運算符、标點符号等
  • 取消、回車、空格等等

Unicode

顯然一個位元組是無法顯示所有的中文的,而且1個位元組已經被使用了,世界上還有很多的語言,是以我們使用2個位元組來表示,2個位元組可以達到0~65535個整數,用來表示中文是可以的,也可以表示ASCII,隻需要在前邊加0即可,這樣就形成了統一的編碼Unicode,Unicode編碼在記憶體中使用

UTF-8

Unicode編碼如果表示大量的英文字元,就會浪費很大的空間,是以我們可以采用“可變長編碼” UTF-8來實作,一般ASCII使用1個位元組來表示,中文根據數字大小,使用3個位元組來表示。UTF-8一般在存儲(檔案儲存時)或者傳輸中(伺服器傳輸資訊到浏覽器)使用。

python腳本中,如果包含中文,就得聲明UTF-8編碼,否則會出現亂碼。如果使用Notepad++,還需要修改成"UTF-8 without BOM”才是使用UTF-8編碼