2012-11-13 85 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