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.