Благодаря на всички, които публикуваха тук. Това наистина помага на знанията ми за unicode (и, надявам се, други хора научиха нещо).
Изглежда, че всички лаем на грешното дърво, тъй като се опитах да опростя проблема си и не дадох ВСЯКА информация. Изглежда, че не използвах "REAL" unicode низове, а по-скоро BeautifulSoup.NavigableString, които се възпроизвеждат като unicode низове. Така че всички разпечатки изглеждаха като unicode, но не бяха.
Някъде дълбоко в библиотеката на MySQLDB те не можеха да се справят с тези низове.
Това работи :
>>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
<Achievement: Mirror's Edge™>
От друга страна :
>>> 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)
Но това работи :
>>> Achievement.objects.get(name = unicode(b))
<Achievement: Mirror's Edge™>
Така че, отново благодаря за цялата помощ за unicode, сигурен съм, че ще бъде полезна. Но засега...
ПРЕДУПРЕЖДЕНИЕ :BeautifulSoup не връща REAL unicode низове и трябва да бъдат принудени с unicode(), преди да направите нещо смислено с тях.