Cảm ơn tất cả những người đã đăng bài ở đây. Nó thực sự giúp ích cho kiến thức unicode của tôi (và rất may những người khác đã học được điều gì đó).
Dường như tất cả chúng tôi đều trồng nhầm cây vì tôi đã cố gắng đơn giản hóa vấn đề của mình và không cung cấp TẤT CẢ thông tin. Có vẻ như tôi đã không sử dụng chuỗi unicode "REAL", mà là BeautifulSoup.NavigableString tự repr dưới dạng chuỗi unicode. Vì vậy, tất cả các bản in trông giống như unicode, nhưng chúng không giống như vậy.
Ở đâu đó sâu trong thư viện MySQLDB, họ không thể xử lý các chuỗi này.
Điều này đã hoạt động:
>>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
<Achievement: Mirror's Edge™>
Mặt khác:
>>> 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)
Nhưng điều này hoạt động:
>>> Achievement.objects.get(name = unicode(b))
<Achievement: Mirror's Edge™>
Vì vậy, một lần nữa, cảm ơn tất cả sự trợ giúp của unicode, tôi chắc chắn rằng nó sẽ rất hữu ích. Nhưng hiện tại ...
CẢNH BÁO :BeautifulSoup không trả lại REAL chuỗi unicode và phải được ép buộc bằng unicode () trước khi làm bất cứ điều gì có ý nghĩa với chúng.