Terima kasih kepada semua orang yang memposting di sini. Ini sangat membantu pengetahuan unicode saya (dan semoga orang lain belajar sesuatu).
Kami sepertinya menggonggong pohon yang salah karena saya mencoba menyederhanakan masalah saya dan tidak memberikan SEMUA informasi. Tampaknya saya tidak menggunakan string unicode "NYATA", melainkan BeautifulSoup.NavigableString yang menyatakan dirinya sebagai string unicode. Jadi semua cetakan tampak seperti unicode, padahal tidak.
Di suatu tempat jauh di dalam perpustakaan MySQLDB mereka tidak dapat menangani string ini.
Ini berhasil :
>>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
<Achievement: Mirror's Edge™>
Sebaliknya :
>>> 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)
Tapi ini berhasil :
>>> Achievement.objects.get(name = unicode(b))
<Achievement: Mirror's Edge™>
Jadi, sekali lagi terima kasih atas semua bantuan unicode, saya yakin itu akan berguna. Tapi untuk saat ini ...
PERINGATAN :BeautifulSoup tidak mengembalikan NYATA string unicode dan harus dipaksa dengan unicode() sebelum melakukan sesuatu yang berarti dengannya.