首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python请求函数: url格式意外的ascii输出

Python请求函数: url格式意外的ascii输出
EN

Stack Overflow用户
提问于 2016-07-25 15:15:37
回答 3查看 147关注 0票数 0

在Python3中使用requests库时,我得到了意想不到的ASCII字符。

代码语言:javascript
复制
search_terms = ["ö", "é", "ä"]
url = "http://www.domain.com/search"

for i in search_terms:
    r = requests.get(url, i)

返回:

代码语言:javascript
复制
http://www.domain.com/search?%C3%B6
http://www.domain.com/search?%C3%A9
http://www.domain.com/search?%C3%A4

虽然我希望:

代码语言:javascript
复制
http://www.domain.com/search?%F6
http://www.domain.com/search?%E9
http://www.domain.com/search?%E4

有人能解释一下发生了什么,并暗示我如何得到预期的结果吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-25 16:05:46

我算出来了,没有任何进一步的导入声明。我现在正在使用encode方法。

旧代码:

代码语言:javascript
复制
for i in search_terms:
    r = requests.get(url, i)

新代码:

代码语言:javascript
复制
for i in search_terms:
    r = requests.get(url, i.encode("iso-8859-1"))
票数 0
EN

Stack Overflow用户

发布于 2016-07-25 15:36:07

我假设请求首先将unicode字符串编码为utf-8,然后引用它们。

代码语言:javascript
复制
>>> urllib.quote(u'ö'.encode('utf-8')) 
%C3%B6
票数 0
EN

Stack Overflow用户

发布于 2016-07-25 15:39:02

那是因为它是UTF-8编码。

代码语言:javascript
复制
>>> u'ö'.encode()
b'\xc3\xb6'
>>> u'é'.encode()
b'\xc3\xa9'
>>> u'ä'.encode()
b'\xc3\xa4'

你想要的似乎是拉丁文编码。你可以这样做到:

代码语言:javascript
复制
# Python 3
>>> from urllib.parse import quote
>>> quote('ö', encoding='iso-8859-1')
'%F6'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38571534

复制
相关文章

相似问题

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