看似mysqldb错误的信息,python django

时间:2008-11-09 03:06:07

标签: python mysql django character-encoding

在latin-1数据库中,我有'\222\222\223\225',当我尝试从django模型中提取此字段时,我会回来u'\u2019\u2019\u201c\u2022'

from django.db import connection                                                                                                                                                                                                                                                    
(Pdb)                                                                                                                                                                                                                                                                                  
cursor = connection.cursor()                                                                                                                                                                                                                                                        
(Pdb)                                                                                                                                                                                                                                                                                  
cursor.execute("SELECT Password from campaignusers WHERE UserID=26")                                                                                                                                                                                                             
(Pdb)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
row = cursor.fetchone()

所以我进入那个并进入

  

/usr/local/python2.5/lib/python2.5/site-packages/MySQL_python-1.2.2-py2.5-linux-i686.egg/MySQLdb/cursors.py(327)fetchone() - >(u'\ u2019 ... 1c \ u2022',)

我不能再进一步了,因为它是一个鸡蛋,但似乎MySQL python驱动程序将数据解释为不是latin-1。

任何人都有任何线索发生了什么?

2 个答案:

答案 0 :(得分:1)

稍微浏览一下已经提出的问题就会导致你UTF-8 latin-1 conversion issues,昨天被问到并回答了。

顺便说一句,我记不起确切的标题,所以我只是用django +'\ 222 \ 222 \ 223 \ 225'搜索并找到它。记住,孩子们,谷歌是你的朋友(tm)。

答案 1 :(得分:0)

Django使用UTF-8,除非您将DEFAULT_CHARSET定义为其他内容。请注意,定义其他字符集将要求您对此字符集中的所有模板进行编码,此字符集将从此处弹出,如电子邮件编码,站点地图和Feed等。所以,IMO,你能做的最好的就是去UTF-8,这会让你在Django中省去很多麻烦(在内部它都是unicode,问题出在你的应用程序的边界上,比如模板和输入)。