惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
J
Java Code Geeks
Martin Fowler
Martin Fowler
博客园 - Franky
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
量子位
腾讯CDC
博客园 - 司徒正美
D
Docker
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
D
DataBreaches.Net
小众软件
小众软件

博客园 - Jason Cui

求助:SQL Server 2005数据库修复后无法收缩 Django:更简单的实现记住密码功能 用Bugols管理自己的项目 请教:为何Asp.net网站会自己弹出用户名密码输入框? 中文在线Bug管理系统 为什么要创建“理财易”? 继续招聘,请个好用的人可真难啊。 招聘两个Asp.net程序员 记账理财网站列表,用户自己挑一个用吧 坚持,究竟有多难? 请教,关于跨站提交的问题,和网站恶意抓取的防止 请教一个有关反射和缓存的高难度问题 诚聘:Asp.net高级技术人员两名 修改了一下Django的源码 幸亏没有选择Ruby On Rails 关于委托的一次实践 Django运行环境配置 Django学习笔记 Python下的Lucene,PyLucene
又改了一次Django的源代码
Jason Cui · 2007-01-12 · via 博客园 - Jason Cui

昨天郁闷了一个晚上,今天早上终于灵光闪现,把问题解决了。

在一个页面上需要给用户提供搜索功能,本来用dbi里面的contains方式就挺好用的,而且中文支持也没有问题。后来因为这个页面是分页的,因此用户提出想要一个汇总数据,于是加上一条自定义的SQL汇总语句,结果,这个语句里面的like '%%'始终就是过不去。要么提示参数不足,要么提示解码错误,说什么ascii编码无法处理特殊字符。

改来改去,试了N多次,都没有解决问题。我觉得自己构造的SQL应该没有问题啊,后来发现,问题很可能出现在那个cursor.execute里面。于是根据错误提示,来到django的代码里,/site-packages/Django-0.95-py2.5.egg/django/db/backends/util.py,给页面的顶部加上#coding=utf-8,OK,错误提示变了,跳到了MySqldb里去。于是再改/site-packages/MySQLdb/cursors.py,给它也加上#coding=utf-8,结果还是不对,仍然提示ascii编码转换错误。

根据错误提示,在这个文件的147行,有一句对查询进行编码的动作,它的编码标准是

# charset = db.character_set_name()
# query = query.encode(charset)

按理说db拿到的编码应该是utf8的,不知道为什么总是会得到ascii编码,导致编码错误,于是将这两行注释掉,查询终于可以通过了。还不知道会不会有什么负作用。

4月24日修正:安装了Django 0.96和Mysqldb1.2.2以后,这个问题好像不存在了。