ここに投稿してくださった皆様、ありがとうございました。それは私のUnicodeの知識に本当に役立ちます(そしてうまくいけば他の人が何かを学んだ)
私は問題を単純化しようとし、すべての情報を提供しなかったので、私たちは皆間違った木を吠えているようでした。私は「REAL」ユニコード文字列を使用していなかったようですが、ユニコード文字列として自分自身を再現するBeautifulSoup.NavigableStringを使用していました。したがって、すべての印刷物はユニコードのように見えましたが、そうではありませんでした。
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™>
それで、すべてのユニコードの助けにもう一度感謝します、私はそれが役に立つと確信しています。しかし今のところ...
警告 :BeautifulSoupは REALを返しません 文字列をユニコード化するため、意味のあることを行う前に、unicode()で強制する必要があります。