Mysql
 sql >> Base de données >  >> RDS >> Mysql

python - Problème de stockage du caractère Unicode dans MySQL avec Django

Merci à tous ceux qui ont posté ici. Cela aide vraiment ma connaissance de l'unicode (et j'espère que d'autres personnes ont appris quelque chose).

Nous semblions tous aboyer sur le mauvais arbre puisque j'ai essayé de simplifier mon problème et que je n'ai pas donné TOUTES les informations. Il semble que je n'utilisais pas de chaînes unicode "REAL", mais plutôt BeautifulSoup.NavigableString qui se reproduisaient comme des chaînes unicode. Ainsi, toutes les impressions ressemblaient à Unicode, mais ce n'était pas le cas.

Quelque part au fond de la bibliothèque MySQLDB, ils ne pouvaient pas gérer ces chaînes.

Cela a fonctionné :

>>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
<Achievement: Mirror's Edge™>

Par contre :

>>> b = BeautifulSoup(u"<span>Mirror's Edge\u2122</span>").span.string
>>> Achievement.objects.get(name = b)
... Exceptoins ...
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 13: ordinal not in range(128)

Mais ça marche :

>>> Achievement.objects.get(name = unicode(b))
<Achievement: Mirror's Edge™>

Donc, merci encore pour toute l'aide unicode, je suis sûr que cela vous sera utile. Mais pour l'instant...

AVERTISSEMENT :BeautifulSoup ne renvoie pas REAL chaînes unicode et doivent être forcées avec unicode() avant de faire quoi que ce soit de significatif avec elles.