sql >> Base de Datos >  >> RDS >> Mysql

python - Problema al almacenar caracteres Unicode en MySQL con Django

Gracias a todos los que estaban publicando aquí. Realmente ayuda a mi conocimiento de Unicode (y espero que otras personas hayan aprendido algo).

Todos parecíamos estar ladrando al árbol equivocado ya que traté de simplificar mi problema y no di TODA la información. Parece que no estaba usando cadenas Unicode "REAL", sino BeautifulSoup. NavigableString que se representan a sí mismas como cadenas Unicode. Así que todas las impresiones parecían Unicode, pero no lo eran.

En algún lugar profundo de la biblioteca MySQLDB no pudieron lidiar con estas cadenas.

Esto funcionó:

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

Por otro lado:

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

Pero esto funciona:

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

Entonces, gracias nuevamente por toda la ayuda de Unicode, estoy seguro de que será útil. Pero por ahora...

ADVERTENCIA :BeautifulSoup no devuelve REAL cadenas unicode y deben ser coaccionadas con unicode() antes de hacer algo significativo con ellas.