带有urllib和重音的Python3

带有urllib和重音的Python3,python,encoding,character-encoding,python-3.x,urllib,Python,Encoding,Character Encoding,Python 3.x,Urllib,我尝试访问带有口音的URL,但无效: #!/usr/bin/python3.3 # -*- coding: utf-8 -*- import urllib.request response = urllib.request.urlopen("http://nominatim.openstreetmap.org/search.php?city=Lévis&format=json") content = response.read() print(content) 当我执行这段代码时

我尝试访问带有口音的URL,但无效:

#!/usr/bin/python3.3
# -*- coding: utf-8 -*- 

import urllib.request

response = urllib.request.urlopen("http://nominatim.openstreetmap.org/search.php?city=Lévis&format=json")
content = response.read()
print(content)
当我执行这段代码时,我得到了这个错误作为回报

UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 22: ordinal not in range(128)
所以我试试这个

response = urllib.request.urlopen("http://nominatim.openstreetmap.org/search.php?city=Lévis&format=json".encode("UTF-8"))
但仍然是一个错误

AttributeError: 'bytes' object has no attribute 'timeout'

你知道我的错误在哪里吗?

你需要避开你的查询参数,就像@Cairnarvon说的:

import urllib.parse

city = 'Lévis'
query = "city=%s&format=json" % (urllib.parse.quote(city),)
response = urllib.request.urlopen("http://nominatim.openstreetmap.org/search.php?" + query)
网址。你需要避开这个令人讨厌的角色。