【问题标题】:how to unicode search in django如何在 django 中进行 unicode 搜索
【发布时间】:2012-11-13 12:17:41
【问题描述】:

我想搜索像ŞÇİÖÜ这样的unicode字符

我这样定义一个搜索函数:

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 öçü

【问题讨论】:

    标签: django unicode


    【解决方案1】:

    您从request.GET.get("search", "") 获得的查询字符串在ISO-8859-8 中,但Django 的默认编码是UTF-8。

    您必须将DEFAULT_CHARSETHttpRequest.encoding 更改为ISO-8859-8 才能获得正确的Unicode 数据。 (https://docs.djangoproject.com/en/dev/ref/settings/#default-charset)

    【讨论】:

    • 当我在 q = request.GET.get("search", "") 之前添加 request.encoding = 'ISO-8859-8' 它返回“eker”¶�§�¼而不是'şekeröçü'
    • 顺便说一句,您使用的是哪个数据库? mysql? PostgreSQL?并且是 utf-8 中的 LC_COLLATION 吗?
    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2016-07-19
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多