sql >> Databasteknik >  >> RDS >> Mysql

python - Problem med att lagra Unicode-tecken till MySQL med Django

Tack till alla som skrev här. Det hjälper verkligen min unicode-kunskap (och förhoppningsvis har andra människor lärt sig något).

Vi verkade alla skälla i fel träd eftersom jag försökte förenkla mitt problem och inte gav ALL information. Det verkar som att jag inte använde "REAL" unicode-strängar, utan snarare BeautifulSoup.NavigableString som representerar sig själva som unicode-strängar. Så alla utskrifter såg ut som unicode, men det var de inte.

Någonstans djupt inne i MySQLDB-biblioteket kunde de inte hantera dessa strängar.

Detta fungerade :

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

Å andra sidan :

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

Men det här fungerar :

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

Så tack igen för all unicode-hjälp, jag är säker på att det kommer att komma väl till pass. Men för nu...

VARNING :BeautifulSoup returnerar inte REAL unicode-strängar och bör tvingas med unicode() innan du gör något meningsfullt med dem.



  1. Returnera en lista över databaser i SQLite

  2. Android Sqlite vid uppgradering av raderingstabell från databasen

  3. Komma igång med Shareplex på Windows på AWS, del 1

  4. MySQL REPLACE:Hur ersätter alla förekomster av en char i varje distinkt delsträng avgränsad av samma huvud och svans