3

アクセントのある 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'

私の間違いはどこにありますか?

4

1 に答える 1

5

@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)
于 2013-03-28T09:11:02.190 に答える