2012-01-10 35 views
0

我正在使用谷歌地圖http://py-googlemaps.sourceforge.net/顯示一些旅行信息。我發送start_addressend_address通過窗體並計算路由服務器端。django:將unicode地址發送到Google地圖

一切正常,當我使用的地址基本ASCII charaters,但如果我用野生克羅地亞的字符,如「čćšž」我得到「‘ASCII’編解碼器不能編碼位置字符U‘\ u010d’ ...「。

,如果我在shell中使用

from googlemaps import GoogleMaps 
directions = GoogleMaps().directions(smart_str(start_address), smart_str(end_address)) 

爲命令運行良好,而不是當我在網站上通過測試服務器上運行。 start_address和end_address都是類型unicode。

那麼我應該如何形成start_address才能使它與整個unicode正常工作?

編輯:

身邊的一些擺弄後,更這是最後的工作代碼:

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

ascii' codec can't encode character u'\u010d' in position...手段,Django的嘗試從Unicode轉換爲Ascii。什麼是settings.DEFAULT_CHARSET值?

嘗試設置settings.DEFAULT_CHARSET = 'UTF-8'

+0

ouh,它沒有設置: - /但現在我得到_'ascii'編解碼器無法解碼位置的字節0xc4 ... _ – mislavcimpersak 2012-01-10 14:53:40

+0

請發送一個完整的(「工作」)代碼與文本這不起作用。 – 2012-01-11 06:39:14

+0

感謝Alexander Artemenko的幫助。得到它的工作,並張貼我的完整工作代碼在原來的職位:) – mislavcimpersak 2012-01-11 07:31:51