簡體   English   中英

Python(請求)編碼問題(UTF-8-CP1251)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM