一.常見編碼
ASCII:使用單個字節(jié)表示字符,最高位為0菜谣,最多能表示128個字符(數字+字母+特殊符號)
GB2312:使用兩個字節(jié)表示字符珠漂,兼容ASCII編碼,能表示中文
Unicode:通常用兩個字節(jié)表示字符尾膊,表示多種語言
UTF-8:針對 Unicode的一種可變長度字符編碼媳危,用一到四個字節(jié)表示字符,兼容ASCII編碼冈敛,能表示多種語言
二.python2編碼
1.字符串類型
str:一般都為str類型待笑,類似bytes,該類型的字符串decode()后為unicode類型
unicode:使用'u'聲明或使用unicode()函數創(chuàng)建字符串抓谴,該類型的字符串encode()后得到str類型
2.類型轉換關系圖
3.查看python2默認編碼
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.getdefaultencoding()
'ascii'
sys.setdefaultencoding()設置默認編碼
4.檢測創(chuàng)建字符串編碼
>>> import chardet
>>> a='a'
>>> type(a)
<type 'str'>
>>> chardet.detect(a)
{'confidence': 1.0, 'language': '', 'encoding': 'ascii'}
>>> a='測試'
>>> chardet.detect(a)
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
默認的當字符串為數字字母或特殊符號為ASCII編碼暮蹂,包含中文為UTF-8編碼
三.python3默認編碼
1.字符串類型
str:類似python2 unicode類型,該類型的字符串encode()后得到bytes類型
bytes:類似pytho2 str類型齐邦,該類型的字符串decode()后為str類型
bytearray:可變的整數序列
2.查看python3默認編碼
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
sys.setdefaultencoding()設置默認編碼
四.實例
python3爬蟲requests.get解析到的HTML是似Unicode類型的字符串
>>> import requests
>>> url = r'https://s.search.bilibili.com/cate/search?callback=jqueryCallback_bili_8033182213391138&main_ver=v3&search_type=video&view_type=hot_rank&order=click©_right=-1&cate_id=163&page=1&pagesize=100&jsonp=jsonp&time_from=20191001&time_to=20191031&_=1570496516751'
>>> res_html=requests.get(url).content #content屬性返回的二進制數據
>>> type(res_html)
'<class 'bytes'>'
>>> print(res_html)
b'tag:\\u7bee\\u7403,\\u4f53\\u80b2' #截取片段
>>> print(res_html.decode('unicode-escape')) #將類型為bytes含unicode編碼的字符串解碼為中文
'tag:籃球,體育'
>>> res_html=requests.get(url).text #text屬性返回的是Unicode類型數據
'<class 'str'>'
>>> print(res_html)
'tag:\\u7bee\\u7403,\\u4f53\\u80b2' #截取片段
>>> print(res_html.encode().decode('unicode-escape')) #將類型轉換成bytes再解碼unicode為中文
'tag:籃球,體育'