python筆記:字符編碼

ASCII編碼

知識點:計算機中最小的單位是bit,bit就我們常說一位二進制,一位二進制要麼是0 要麼是 1。可是bit這個單位過小了,咱們用字節(byte)來表示。換算的規則以下:html

8b = 1B      #小b=bit ; 大B=byte
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1T 

在存儲英文的時候咱們至少須要1個字節(一個字母),就是8位(bit),看下ASCII表中1個字節就能夠表示全部的英文所須要的字符,那你會發現1個字節8位,他能存儲的最大數據是2的8次方-1 = 255,一個字節最多能表示255個字符。大數據

 

Unicode編碼(統一碼、萬國碼、單一碼)

國際互聯網組織提出的Unicode 」萬國編碼」,Unicode是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定全部的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536優化

 注:此處說的的是最少2個字節,可能更多。這裏還有個問題,使用的字節增長了,那麼形成的直接影響就是使用的空間就直接翻倍了。編碼

 

UTF-8編碼

爲了解決Unicode佔用空間問題就出現了UTF-8編碼,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:spa

1)ascii碼中的內容用1個字節保存code

2)歐洲的字符用2個字節保存htm

3)東亞的字符用3個字節保存。blog

 

字符轉碼

一、Python3中默認就是unicode編碼。token

#-*- coding:utf-8 -*-

tim = '你好'
#unicode轉爲UTF-8編碼
print(tim.encode('UTF-8'))
#unicode轉爲GBK編碼
print(tim.encode('GBK'))

 

二、Python2.X中默認是ASCII編碼,你在文件中指定編碼爲UTF-8,可是UTF-8若是你想轉GBK的話是不能直接轉的,的須要Unicode作一個轉接站點。utf-8

#-*- coding:utf-8 -*-

tim = '你好' print chardet.detect(tim) #UTF-8先解碼爲Unicode編碼,而後再從Unicode編碼爲GBK new_tim = tim.decode('UTF-8').encode('GBK') print chardet.detect(new_tim)

 

參考:https://www.cnblogs.com/luotianshuai/articles/5735051.html

相關文章
相關標籤/搜索