2012-02-24 46 views
2

\大家好,Unicode的錯誤urllib.urlencode - 在我的Django的Web應用程序

用戶正在進入一個Unicode值(U「\ u2206」)到被提交給我的Django視圖中的文本框中。該視圖使用GET數據生成一個URL,以便稍後返回搜索頁面。

它在用戶提交unicode字符時生成URL時遇到問題。

這裏的最佳做法是什麼。在將它發送到urlencode之前,我應該對獲取的數據進行編碼嗎?我應該使用什麼編碼?

相關代碼:

search_form = SearchForm(request.GET) 
get_data = dict([(key,item) for (key,item) in search_form.data.items()]) 
get_params = '&' + urllib.urlencode(query=get_data.items()) 

錯誤: 回溯(最近通話最後一個):

File "/opt/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 100, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 

    File "/opt/python/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 25, in _wrapped_view 
    return view_func(request, *args, **kwargs) 

    File "/opt/DjangoProjects/Fly/FlyStore/views.py", line 465, in search 
    get_params = '&' + urllib.urlencode(query=get_data.items()) 

    File "/opt/python/lib/python2.7/urllib.py", line 1282, in urlencode 
    v = quote_plus(str(v)) 

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2206' in position 15: ordinal not in range(128) 

回答

6

編碼爲URL編碼前UTF-8。

+1

謝謝,你是一個寶石。 – Greg 2012-02-24 18:36:48