У меня есть функция, которая вызывает API Google:
def get_lat_long(place):
place = re.sub('\s','+', str(place), flags=re.UNICODE)
url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + place
content = urllib2.urlopen(url).read()
obj = json.loads(content)
results = obj['results']
lat = long = None
if len(results) > 0:
loc = results[0]['geometry']['location']
lat = float(loc['lat'])
long = float(loc['lng'])
return [lat, long]
Однако, когда я ввожу 師大附中 в качестве параметра, я получаю сообщение об ошибке:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
Я пытался сделать str(place).encode('utf-8'), но не думаю, что это проблема. Я думаю, это потому, что функция не может читать китайские иероглифы, поэтому ей нужно сначала преобразовать китайские иероглифы в строку юникода, прежде чем она ее прочитает? Хотя это всего лишь предположение.
str(place).encode('utf-8')
не имеет особого смысла,str
сам выполняет кодирование/декодирование - person Karol S   schedule 04.10.2014place
?unicode
? - person Karol S   schedule 05.10.2014