Python字符編碼

一.常見編碼

ASCII:使用單個(gè)字節(jié)表示字符,最高位為0,最多能表示128個(gè)字符(數(shù)字+字母+特殊符號(hào))
GB2312:使用兩個(gè)字節(jié)表示字符,兼容ASCII編碼,能表示中文
Unicode:通常用兩個(gè)字節(jié)表示字符,表示多種語言
UTF-8:針對 Unicode的一種可變長度字符編碼,用一到四個(gè)字節(jié)表示字符,兼容ASCII編碼,能表示多種語言

二.python2編碼

1.字符串類型
str:一般都為str類型,類似bytes,該類型的字符串decode()后為unicode類型
unicode:使用'u'聲明或使用unicode()函數(shù)創(chuàng)建字符串,該類型的字符串encode()后得到str類型

2.類型轉(zhuǎn)換關(guān)系圖

3.查看python2默認(rèn)編碼

>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.getdefaultencoding()
'ascii'

sys.setdefaultencoding()設(shè)置默認(rèn)編碼

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'}

默認(rèn)的當(dāng)字符串為數(shù)字字母或特殊符號(hào)為ASCII編碼,包含中文為UTF-8編碼

三.python3默認(rèn)編碼

1.字符串類型
str:類似python2 unicode類型,該類型的字符串encode()后得到bytes類型
bytes:類似pytho2 str類型,該類型的字符串decode()后為str類型
bytearray:可變的整數(shù)序列

2.查看python3默認(rèn)編碼

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

sys.setdefaultencoding()設(shè)置默認(rèn)編碼

四.實(shí)例

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&copy_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屬性返回的二進(jìn)制數(shù)據(jù)
>>> 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類型數(shù)據(jù)
'<class 'str'>'
>>> print(res_html)
'tag:\\u7bee\\u7403,\\u4f53\\u80b2'     #截取片段
>>> print(res_html.encode().decode('unicode-escape'))    #將類型轉(zhuǎn)換成bytes再解碼unicode為中文
'tag:籃球,體育'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符集和編碼簡介 在編程中常??梢砸姷礁鞣N字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說...
    蘭山小亭閱讀 9,080評(píng)論 0 13
  • 一、字符編碼 1、字符編碼發(fā)展史 階段一:現(xiàn)代計(jì)算機(jī)起源于美國,最早誕生的也是基于英文考慮的ASCII碼;ASCI...
    CaiGuangyin閱讀 796評(píng)論 1 4
  • 點(diǎn)擊跳轉(zhuǎn)筆記總目錄 1.內(nèi)存和硬盤都是用來存儲(chǔ)的。 內(nèi)存:速度快,臨時(shí)存放硬盤:速度慢,永久保存 2.文本編輯器存...
    花姐毛毛腿閱讀 436評(píng)論 0 1
  • 一.字符編碼 學(xué)習(xí)Demo字符串也是一種數(shù)據(jù)類型,但是,字符串比較特殊的是還有一個(gè)編碼問題。 因?yàn)橛?jì)算機(jī)只能處理數(shù)...
    小哥_xiaoge閱讀 1,023評(píng)論 0 0
  • 上午的時(shí)間就是收拾家和洗衣服 中午就去工作室,有顧客做項(xiàng)目 吃飯,商討這個(gè)月的計(jì)劃和如何實(shí)施, 下午四點(diǎn)半接...
    亞楠寶貝閱讀 86評(píng)論 0 0

友情鏈接更多精彩內(nèi)容