UTF-8和中文字符
我有一个调用google API的函数:UTF-8和中文字符,utf-8,unicode-string,Utf 8,Unicode String,我有一个调用google API的函数: 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(co
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)
我试着用strplace编码“utf-8”,但我认为这不是问题所在。我认为这是因为函数无法读取汉字,所以它需要先将汉字转换为unicode字符串,然后再读取?不过这只是猜测而已 假设place是unicode类型,您需要执行以下操作:
def get_lat_long(place):
place = urllib.quote_plus(place.encode('utf-8'))
url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + place
1.哪个Python版本?2.错误发生在哪一行?你能把你的例子精简到这一行吗?3.strplace.encode'utf-8'没有多大意义,str自己进行编码/解码我的Python版本是2.7。我得到错误的那一行是我发布的代码片段的第二行。什么样的地方?unicode?