http://blog.donews.com/maverick/archive/2006/08/23/1012040 .aspx
问题的根源似乎在于,MySQLdb的cursor在执行execute操作时,运行了如下代码(cursor.py第146行):
charset = db.character_set_name()
query = query.encode(charset) # 可直接改为 "utf8" 可以不改, 看下面
SET character_set_client='utf8'SET character_set_connection='utf8'SET character_set_results='utf8'
这个配置就等价于 SET NAMES 'utf8'。
修改 D:\Python24\Lib\site-packages \django\db\backends\mysql\base .py搜索 kwargs.update(self.options)
self.connection = Database.connect(**kwargs)
cursor = self.connection.cursor()添加 if self.connection.get_server_info() >= '4.1':
cursor.execute("SET NAMES 'GB2312';") 这样一来就好办了, 如果使用 DEFAULT_CHARSET = 'utf-8'; 修改为 cursor.execute("SET NAMES 'GB2312';SET character_set_results='utf8';") 如果使用 DEFAULT_CHARSET = 'gb2312'; 修改为 cursor.execute("SET NAMES 'GB2312';") sqlyog 显示中文也容易了 , 执行 SET character_set_results='gb2312' 就可以.