Mysql
 sql >> Datenbank >  >> RDS >> Mysql

python – Problem beim Speichern von Unicode-Zeichen in MySQL mit Django

Vielen Dank an alle, die hier gepostet haben. Es hilft wirklich meinem Unicode-Wissen (und hoffentlich haben andere Leute etwas gelernt).

Wir schienen alle den falschen Baum zu bellen, da ich versucht habe, mein Problem zu vereinfachen und nicht ALLE Informationen gegeben habe. Es scheint, dass ich keine "ECHTEN" Unicode-Strings verwendet habe, sondern BeautifulSoup.NavigableString, die sich selbst als Unicode-Strings darstellen. Alle Ausdrucke sahen also wie Unicode aus, waren es aber nicht.

Irgendwo tief in der MySQLDB-Bibliothek konnten sie mit diesen Strings nicht umgehen.

Das hat funktioniert :

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

Andererseits :

>>> 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)

Aber das funktioniert :

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

Nochmals vielen Dank für all die Unicode-Hilfe, ich bin mir sicher, dass sie sich als nützlich erweisen wird. Aber jetzt ...

WARNUNG :BeautifulSoup gibt nicht REAL zurück Unicode-Strings und sollten mit unicode() erzwungen werden, bevor irgendetwas Sinnvolles mit ihnen gemacht wird.