[英]Python (requests) encoding trouble (UTF-8 - CP1251)
我試圖獲得帶有requests
python擴展的URL http://example.com/?param=%DD%CC%C0-15
這樣的URL:
group = "ЭМА-15".encode('cp1251')
r = requests.get('http://example.com/?param=' + group)
r.encoding = "cp1251"
(因為該站點使用Windows-1251(cp1251)編碼)
在第2行出現錯誤: UnicodeDecodeError: 'utf8' codec can't decode byte 0xdd in position 82: invalid continuation byte
但是,此UnicodeDecodeError: 'utf8' codec can't decode byte 0xdd in position 82: invalid continuation byte
序列(0xDD(%DD)...)正是我所需要的。 我該如何解決?
我猜您正在嘗試顯示cp1251
字符,但您的編輯器配置為使用utf8
coding: cp1251
僅由Python解釋器用來從ASCII范圍之外的源python文件轉換字符。 嘗試:
group = "ЭМА-15".decode('utf8').encode('cp1251')
r = requests.get('http://example.com/?param=' + group)
r.encoding = "cp1251"
當我在終端上運行時
>>> "ЭМА-15".decode('utf8').encode('cp1251')
'\xdd\xcc\xc0-15'
有兩件事。 1. Python解釋器需要知道源中“ЭМА-15”字符串的編碼。2.查詢參數通常由requests
處理,但是由於您是手動構造URL,因此最好自己引用它。
# -*- coding: utf-8 -*-
import urllib
import requests
group = u"ЭМА-15".encode('cp1251')
param = urllib.quote_plus(group)
print(param)
r = requests.get('http://example.com/?param=' + param)
輸出量
%DD%CC%C0-15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.