Bạn có thể sử dụng toán tử ==
để so sánh các đối tượng unicode cho bình đẳng.
>>> s1 = u'Hello'
>>> s2 = unicode("Hello")
>>> type(s1), type(s2)
(<type 'unicode'>, <type 'unicode'>)
>>> s1==s2
True
>>>
>>> s3='Hello'.decode('utf-8')
>>> type(s3)
<type 'unicode'>
>>> s1==s3
True
>>>
Nhưng, thông báo lỗi của bạn cho thấy rằng bạn không so sánh đối tượng unicode. Bạn có lẽ so sánh một đối tượng unicode
đến một đối tượng str
, như vậy:
>>> u'Hello' == 'Hello'
True
>>> u'Hello' == '\x81\x01'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
Xem làm thế nào tôi đã cố gắng để so sánh một đối tượng unicode chống lại một chuỗi mà không đại diện cho một mã hóa UTF8 hợp lệ.
Chương trình của bạn, tôi giả sử, là so sánh các đối tượng unicode với các đối tượng str và nội dung của đối tượng str không phải là mã hóa UTF8 hợp lệ. Điều này có vẻ là kết quả của bạn (lập trình viên) không biết biến nào giữ nguyên tử, biến nào giữ UTF8 và biến nào giữ byte được đọc từ một tệp.
Tôi khuyên bạn nên http://nedbatchelder.com/text/unipain.html, đặc biệt là lời khuyên để tạo "Bánh răng Unicode".
Nguồn
2013-08-12 18:43:25
Liên kết này có thể hữu ích: http://nedbatchelder.com/text/unipain.html –
Vui lòng đăng một chương trình ví dụ hoàn chỉnh ngắn, khép kín. Giảm mã của bạn xuống chương trình năm đến mười dòng tạo ra thông báo lỗi đó và đăng chương trình ngắn vào câu hỏi của bạn. Xem http://SSCCE.ORG để biết thêm thông tin. –