1. 程式人生 > >字符編碼 and 字節和字符串轉換(待補充)

字符編碼 and 字節和字符串轉換(待補充)

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 字節和字符串轉換(待補充)