字符編碼 and 字節和字符串轉換(待補充)
阿新 • • 發佈:2018-05-28
print 文字 兼容 pre encoding 才會 字節 字符串轉換 字符串類型
ascii用一個字節(8位二進制)代表一個字符
Unicode常用2個字節(16位二進制)代表一個字符,生僻字需要用四個字節
漢字中已經超出了ASCII編碼的範圍,用Unicode,
Unicode兼容ascii,也兼容萬國,是世界的標準
亂碼問題消失了,所有的文檔我們都使用但是新問題出現了,如果我們的文檔通篇都是英文,你用Unicode會比ascii耗費多一倍的空間,在存儲和傳輸上也十分的低效
本著節約的精神,又出現了把Unicode編碼轉化為"可変長編碼"的UTF8編碼,utf8編碼把一個Unicode字符根據不同的數字大小編碼成1-6個字節,常用的英文字母被編碼成一個字節,漢字通常是三個字節,只有很生僻的字符才會被編碼成4-6個字節。如果你要傳輸的文本包含大量英文字符,用utf8編碼就能節省空間
utf8編碼還有一個額外的好處,就是ascii編碼實際上可以被看成是utf8編碼的一部分,所以,大量只支持ascii編碼的歷史遺留軟件可以在utf8編碼下繼續工作
python3中有兩種字符串類型str和bytes
python3中str就是unicode
python2要加u的前綴才算是Unicode
a=‘呵呵‘
print(type(a))#<class ‘str‘>
b=bytes(a,encoding=‘utf8‘) print(b)#b‘\xe5\x91\xb5\xe5\x91\xb5‘ c=str(b,encoding=‘utf8‘)print(c)#呵呵 python3默認字符串就是Unicode
a=‘呵呵‘
#a可以直接encode成任意編碼格式
b=a.encode(‘utf8‘) print(b)#字節 b‘\xe5\x91\xb5\xe5\x91\xb5‘
print(type(b))#<class ‘bytes‘>
c=b.decode(‘utf8‘)
print(c)#字符串
import sys print(sys.getdefaultencoding())#可以查看默認編碼
字符編碼 and 字節和字符串轉換(待補充)