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

python - Problem med at gemme Unicode-tegn til MySQL med Django

Tak til alle, der har skrevet her. Det hjælper virkelig på min unicode-viden (og meget har andre mennesker lært noget).

Det så ud til, at vi alle gøede op i det forkerte træ, da jeg prøvede at forenkle mit problem og ikke gav ALLE oplysninger. Det ser ud til, at jeg ikke brugte "RIGTIGE" unicode-strenge, men derimod BeautifulSoup.NavigableString, som repræsenterer sig selv som unicode-strenge. Så alle udskrifterne lignede unicode, men det var de ikke.

Et eller andet sted dybt i MySQLDB-biblioteket kunne de ikke håndtere disse strenge.

Dette virkede :

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

På den anden side :

>>> 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 dette virker :

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

Så tak igen for al unicode-hjælpen, jeg er sikker på, at det vil komme til nytte. Men indtil videre ...

ADVARSEL :BeautifulSoup returnerer ikke RIGTIG unicode-strenge og bør tvinges med unicode(), før du gør noget meningsfuldt med dem.



  1. Nem måde at eksportere en SQL-tabel uden adgang til serveren eller phpMyADMIN

  2. Oracle:er der nogen logisk grund til ikke at bruge parallel eksekvering med underforespørgsler i SELECT-listen?

  3. Hvorfor vælge Top-klausul kan føre til lange tidsomkostninger

  4. Mere om introduktion af tidszoner i langlivede projekt