Python(请求)编码问题(UTF-8 - CP1251)
Python (requests) encoding trouble (UTF-8 - CP1251)
我试图通过 requests
python 扩展名获得这种 URL http://example.com/?param=%DD%CC%C0-15
:
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
但是这个字节序列 (0xDD (%DD)...) 正是我所需要的。
我该如何解决?
我猜你正试图显示 cp1251
个字符,但你的编辑器配置为使用 utf8
coding: cp1251
仅供 Python 解释器用于转换源 python 文件中超出 ASCII 范围的字符。尝试:
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
我试图通过 requests
python 扩展名获得这种 URL http://example.com/?param=%DD%CC%C0-15
:
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
但是这个字节序列 (0xDD (%DD)...) 正是我所需要的。
我该如何解决?
我猜你正试图显示 cp1251
个字符,但你的编辑器配置为使用 utf8
coding: cp1251
仅供 Python 解释器用于转换源 python 文件中超出 ASCII 范围的字符。尝试:
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