python 3 編碼
文字總是 unicode,由 str 型別進行表示
二進位制資料使用 bytes 進行表示
encode() :編碼
decode():解碼
二進位制和字串之間的轉換
二進位制轉字串:decode('utf-8')
字串轉二進位制:encode('utf-8')
在python 3 中的編碼坑
在python3 中經常會碰到編碼問題 ,如 讀取小檔案 .read() ,使用爬蟲 ***.read(),經常會進行轉碼
最主要的是, 轉碼正確,因為系統操作環境不同,編譯器的不同,也會出現錯誤。如下面錯誤:
unicodeencodeerror: 'gbk' codec can't encode character '\u2022' in position 1489: illegal multibyte sequence
import urllib.request
import urllib.parse
url = ''
formdata ={
'start':0,
'limit':20,
data = urllib.parse.urlencode(formdata).encode('utf-8')
headers = {
req = urllib.request.request(url,data=data,headers=headers)
res = urllib.request.urlopen(req)
json = res.read().decode('utf-8') #或 str(res.read , 'utf-8')
print(json)
pycharm 顯示正常 , win7 cmd 確報錯,不列印,直接儲存檔案也正常
錯誤原因是 cmd 預設編碼是gbk ,需要改cmd預設編碼和win7 系統編碼
網上查了下 是因為print()函式自身有限制,不能完全列印所有的unicode字元,print()函式的侷限就是python預設編碼的侷限,因為系統是win7的,python的預設編碼不是'utf-8',改一下python的預設編碼成'utf-8'就行了
import sys
import io
#改變標準輸出的預設編碼
詳細內容可檢視:
python3編碼宣告 python3編碼問題彙總
這兩天寫了個監測網頁的爬蟲,作用是跟蹤乙個網頁的變化,但執行了一晚出現了乙個問題。希望大家不吝賜教!我用的是python3,錯誤在對html response的decode時丟擲,原樣為 response urllib.urlopen dsturl content response.read dec...
python3 標準型別
number 數字 string 字串 list 列表 tuple 元組 sets 集合 dictionary 字典 python3 支援 int float bool complex 複數 1 python可以同時為多個變數賦值,如a,b 1,2。2 乙個變數可以通過賦值指向不同型別的物件。3 數...
python3編碼解碼
輸入編碼 輸入編碼需要由二進位制轉為unicode,輸入介質 原始碼檔案 終端 檔案 網路等 python3預設是使用utf 8編碼對輸入的二進位制值轉為unicode。也就是說如果輸入介質沒有指定編碼,python3直譯器就預設把你的原始檔看成是utf 8編碼。呼叫sys.getdefaulten...