2008-11-09 5 views
0

Dans une base de données latin-1 j'ai '\222\222\223\225', quand j'essaye de tirer ce champ des modèles django je reviens u'\u2019\u2019\u201c\u2022'.informations semblant sortir de mysqldb incorrectement, python django

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

J'étape dans cela et entrer dans

/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',)

je ne peux pas de plus dans ce parce que son un oeuf mais il semble que le pilote python MySQL interprète les données pas comme latin-1.

Quelqu'un at-il la moindre idée de ce qui se passe?

Répondre

1

Une petite exploration des questions déjà posées vous aurait conduit à UTF-8 latin-1 conversion issues, qui a été posée et a répondu hier.

BTW, je ne pouvais pas me souvenir du titre exact, donc j'ai juste googlé sur django + '\ 222 \ 222 \ 223 \ 225' et l'ai trouvé. Rappelez-vous, les enfants, Google est votre ami (tm).

+0

c'était ma question et pendant que les réponses étaient bonnes je ne posais pas la bonne question. – jacob

+0

Exactement. J'ai commencé à faire des systèmes de récupération de texte à l'âge de pierre (1979), et j'ai rapidement constaté que le conflit de vocabulaire et la formation de requêtes étaient les plus grands obstacles à la recherche de la réponse que vous vouliez. Si vous faites une recherche sur les "maladies des chats", vous ne trouverez peut-être jamais un article important sur "les pathologies félines". –

0

Django utilise UTF-8, sauf si vous définissez DEFAULT_CHARSET comme étant autre chose. Sachez que la définition d'un autre jeu de caractères vous obligera à encoder tous vos modèles dans ce jeu de caractères et ce jeu de caractères apparaîtra d'ici à là, comme l'encodage des emails, dans les sitemaps et les flux, etc. Donc, IMO, le mieux que vous pouvez faire est d'aller UTF-8, cela vous évitera beaucoup de maux de tête avec Django (en interne tout est unicode, les problèmes sont sur les frontières de votre application, comme les templates et les entrées).

Questions connexes