2012-11-13 49 views
0

搜索我想要搜索的東西在Unicode字符像ŞÇİÖÜ如何UNICODE在Django

我定義了一個SEACH功能類似:

def search(request): 
    from django.db.models import Q 
    q = request.GET.get("search", "") 
    k = q.split() 
    list=[] 
    for i in k: 
     query = Q(title__icontains=i) | Q(content__icontains=i) 
     posts = Post.objects.filter(query).distinct().order_by('date') 
     list.append(posts) 
     total = 0 
     if list[0]: 
      total += len(list) 

    return render_to_response('search_results.html', RequestContext(request, { 
     "list": list, 
     "q": q, 
     "total": total, 
    })) 

我有LANGUAGE_CODE = "UTF-8"。當我想搜索'Şeker Öçü'它不會返回任何內容,但我在帖子中有şeker öçü

回答

0

您從request.GET.get("search", "")獲取的查詢字符串爲ISO-8859-8,但Django的默認編碼爲UTF-8。

您必須更改DEFAULT_CHARSETHttpRequest.encodingISO-8859-8以獲取正確的Unicode數據。 (https://docs.djangoproject.com/en/dev/ref/settings/#default-charset

+0

當我添加request.encoding ='ISO-8859-8'之前q = request.GET.get(「搜索」,「」)它返回的是客戶而不是'şeker öçü' – aysekucuk

+0

哪個數據庫你使用btw? MySQL的? PostgreSQL的?並且是utf-8中的LC_COLLATION? –

+0

我現在使用sqlite3 – aysekucuk