免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5123 | 回复: 3
打印 上一主题 下一主题

[已搞定]怎样处理urlencode后的汉字才查询出结果?(django开发) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-23 11:15 |只看该作者 |倒序浏览
我现在使用Django(magic-removal)开发程序.
数据库是mysql4.1,全部采用utf-8编码(包括client,mysqld,connection)。
      
      过程如下:
      1 浏览器中输入地址 http://localhost/keyword/我

      2 浏览器自行urlencode变成http://localhost/keyword/%CE%D2

      3 Django的myapp/urls.py中 (r'^keyword/(?P<keyword>\S+)/$', 'myapp.keyword.views.get') 用来把访问地址为http://localhost/keyword/%CE%D2中的"%CE%D2"传入myapp.keyword.views.get函数中.

      4 myapp.keword.views.get(request,keyword)函数用来查询数据库中的数据,现在对于英文和数字的keyword都能正确的返回结果,但是面对urlencode后的中文,无法得到查询结果

        
myapp.keword.views.get函数原型如下:
def get(request,keyword):
    if keyword:
        from urllib import unquote_plus
        print unquote_plus(keyword)#用来打印keyword,显示正常
        t = Keyword.objects.get(keyword__exact=keyword)#这里的keyword__exact="%CE%D2",不能查询出结果,若使用keyword__exact=unquote_plus(keyword),也得不到查询结果
        return object_list(request, t.adword.all(), paginate_by=1)


      现在的问题是到底要如何处理urlencode后的汉字才能查询出结果?

[ 本帖最后由 zagorot 于 2006-5-23 16:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-05-23 13:53 |只看该作者
在线等!  谁能帮帮我?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2006-05-23 14:13 |只看该作者
只是猜测,如果着急的话,可以试一试。
两个解决方案:
1,如果你是 IE 用户的话,
依次点击:“工具”->“Internet 选项”->“高级”->“总是以 UTF-8 发送 URL(需要重启动)”(最后一项),然后点击“确定”,
再试。
如果你是 FireFox 用户的话,
依次点击:“Tools”->“Options”->Content->“Fonts & Colors”->“Advanced”->“Default Character Encoding” 选择 UTF-8,然后点击 OK 再试。
2,在服务器端,也就是你的 Python 程序中,做完 uri escape 的解码之后,再进行 GBK 到 UTF-8 的转码,然后将转码后结果进行 mysql 查询。

论坛徽章:
0
4 [报告]
发表于 2006-05-23 14:32 |只看该作者
谢谢。
浏览器也都已经是utf-8编码的了啊


====update====
已经搞定,原来不能直接在浏览器地址栏中敲汉字,而是必须从utf-8编码的网页中链接过去。
比如: http://localhost/keyword/我    这样的链接,
直接在浏览器中敲,则会变成各种各样的地址(不同的浏览器有不同的做法,IE6会变成http://localhost/keyword/鎴,Firefox1.5会变成http://localhost/keyword/%CE%D2

而通过utf-8编码的网页中链接过去,地址将变成http://localhost/keyword/%E6%88%91,这样才是正确的做法。


谢谢各位!!!

[ 本帖最后由 zagorot 于 2006-5-23 16:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP