Mysql
 sql >> Database >  >> RDS >> Mysql

python - Problema di memorizzazione del carattere Unicode su MySQL con Django

Grazie a tutti quelli che hanno postato qui. Aiuta davvero la mia conoscenza dell'unicode (e si spera che altre persone abbiano imparato qualcosa).

Sembrava che stessimo tutti abbaiando all'albero sbagliato poiché ho cercato di semplificare il mio problema e non ho fornito TUTTE le informazioni. Sembra che non stessi usando stringhe unicode "REAL", ma piuttosto BeautifulSoup.NavigableString che si riproducono come stringhe unicode. Quindi tutte le stampe sembravano Unicode, ma non lo erano.

Da qualche parte nel profondo della libreria MySQLDB non potevano gestire queste stringhe.

Questo ha funzionato :

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

D'altra parte :

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

Ma funziona :

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

Quindi, grazie ancora per tutto l'aiuto di unicode, sono sicuro che tornerà utile. Ma per ora...

AVVISO :BeautifulSoup non restituisce REALE stringhe unicode e dovrebbe essere forzato con unicode() prima di fare qualcosa di significativo con esse.