2012-02-24 10 views
2

では、\すべてのこんにちは、Unicodeのエラー - 私のジャンゴWebアプリケーション

ユーザーは、私のDjangoのビューに提出されたテキストボックスに(uは「u2206 \」)Unicode値を入力されます。このビューはGETデータを使用して後で検索ページに戻るためのURLを生成します。

ユーザーがユニコード文字を送信するとURLを生成できません。

ここでベストプラクティスは何ですか。私はそれをurlencodeに送る前にデータをエンコードすべきですか?私はどんなエンコーディングを使うべきですか? URLエンコード前

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

エンコードUTF-8のように:

関連するコード:

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()) 

エラー: トレースバック(最新の呼び出しの最後)。

+1

ありがとうございます、あなたは宝石です。 – Greg

関連する問題