[большой жирный комментарий, потому что комментарии не могут быть хорошо отформатированы]
Следуя инструкциям @Boaz Yaniv, у меня работает:
>>> addressString = 'Wilhelmstra\xc3\x9fe 123, T\xc3\xbcbingen, Deutschland'
Это str
объект, закодированный в UTF-8. Нам нужно избегать процентов, чтобы его можно было использовать в URL.
>>> import urllib
>>> fixed = urllib.quote(addressString)
>>> print repr(fixed)
'Wilhelmstra%C3%9Fe%20123%2C%20T%C3%BCbingen%2C%20Deutschland'
Теперь давайте попробуем:
>>> url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + fixed +
"&sensor=false"
>>> guff = urllib.urlopen(url).read()
>>> import json
>>> print repr(json.loads(guff)['results'][0]['formatted_address'])
u'Wilhelmstra\xdfe 123, 72074 T\xfcbingen, Germany'
>>>
Если у вас есть что-то вроде этого: 'Wilhelmstra\xdfe 123, T\xfcbingen, Deutschland'
, это объект str
, закодированный в latin1 или cp1252 или как угодно. Вам нужно будет декодировать это в unicode
объект, затем кодировать это в UTF-8, а затем экранировать в процентах.
Однако, если у вас есть (ОЧЕНЬ тонкая разница) u'Wilhelmstra\xdfe 123, T\xfcbingen, Deutschland'
, это объект unicode
, и вам нужно будет его кодировать в UTF-8, а затем избегать процентов.
Вы сказали "" "
я все еще получаю то же сообщение об ошибке: Тип исключения: UnicodeEncodeError Значение исключения: кодек «ascii» не может кодировать символ u '\ xdf' в позиции 10: порядковый номер не в диапазоне (128) при запросе ссылки
"" "
Похоже, вы подаете объект unicode
чему-то, что хочет объект str
и пытается получить его путем кодирования с использованием (обычно по умолчанию) ascii
кодирования. Если проблема не устранена, покажите свой код. Разбейте его до необходимого минимума (как я делал выше). Показать репр (step_by_step_results).