首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python (请求)编码问题(UTF-8 - CP1251)

Python (请求)编码问题(UTF-8 - CP1251)
EN

Stack Overflow用户
提问于 2016-12-08 22:23:58
回答 2查看 1.9K关注 0票数 0

我试图获得这种具有http://example.com/?param=%DD%CC%C0-15扩展的requests URL,如下所示:

代码语言:javascript
复制
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).)正是我所需要的。我怎么才能解决呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-08 22:36:38

有两件事。1. Python解释器需要知道源2中"ЭМА-15“字符串的编码。查询参数通常由ЭМА处理,但由于您正在手动构造ЭМА,所以最好自己引用。

代码语言:javascript
复制
# -*- 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)

输出

代码语言:javascript
复制
%DD%CC%C0-15
票数 1
EN

Stack Overflow用户

发布于 2016-12-08 22:30:42

我猜您正在尝试显示cp1251字符,但是您的编辑器配置为使用utf8coding: cp1251解释器仅用于转换来自ASCII范围以外的源程序Python文件中的字符。尝试:

代码语言:javascript
复制
group = "ЭМА-15".decode('utf8').encode('cp1251')
r = requests.get('http://example.com/?param=' + group)
r.encoding = "cp1251"

当我在航站楼上奔跑时,

代码语言:javascript
复制
>>> "ЭМА-15".decode('utf8').encode('cp1251')
'\xdd\xcc\xc0-15'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41049896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档