我正在使用 googlemaps http://py-googlemaps.sourceforge.net/来显示一些旅行信息。我通过表单发送 start_address 和 end_address 并计算路由服务器端。
当我在地址中使用基本的ascii字符时一切正常,但如果我使用狂野的克罗地亚字符,例如'čćšž'我得到“'ascii'编解码器无法编码字符u '\ u010d'位置......“。
如果我使用
from googlemaps import GoogleMaps
directions = GoogleMaps().directions(smart_str(start_address), smart_str(end_address))
作为命令在shell中运行良好,但不是当我在网站上运行测试服务器时。 start_address和end_address都是unicode类型。
那么为了让它能够在整个unicode中正常运行,我怎么能形成start_address呢?
修改
在摆弄更多之后,这是最终有效的代码:
from django.shortcuts import render_to_response
from django.utils.encoding import smart_unicode, smart_str
from googlemaps import GoogleMaps
def calculations(request):
if request.method == 'POST':
trip = {}
start_address = smart_str(request.POST.get('start_address'))
end_address = smart_str(request.POST.get('end_address'))
directions = GoogleMaps().directions(start_address, end_address)
trip['length'] = directions['Directions']['Distance']['html']
trip['duration'] = directions['Directions']['Duration']['html']
return render_to_response( 'index.html', {'trip':trip, }, context_instance = RequestContext(request) )
您可以考虑关闭该问题:)
答案 0 :(得分:0)
ascii' codec can't encode character u'\u010d' in position...
表示,django尝试从Unicode转换为Ascii。您的settings.DEFAULT_CHARSET
值是多少?
尝试设置settings.DEFAULT_CHARSET = 'UTF-8'
。