我试图获得这种具有http://example.com/?param=%DD%CC%C0-15扩展的requests URL,如下所示:
group = "ЭМА-15".encode('cp1251')
r = requests.get('http://example.com/?param=' + group)
r.encoding = "cp1251"(因为site使用windows-1251 (cp1251)编码)
并获得第2行的错误:UnicodeDecodeError: 'utf8' codec can't decode byte 0xdd in position 82: invalid continuation byte,但是这个字节序列(0xDD (%DD).)正是我所需要的。我怎么才能解决呢?
发布于 2016-12-08 22:36:38
有两件事。1. Python解释器需要知道源2中"ЭМА-15“字符串的编码。查询参数通常由ЭМА处理,但由于您正在手动构造ЭМА,所以最好自己引用。
# -*- 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发布于 2016-12-08 22:30:42
我猜您正在尝试显示cp1251字符,但是您的编辑器配置为使用utf8,coding: cp1251解释器仅用于转换来自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'https://stackoverflow.com/questions/41049896
复制相似问题