Vấn đề bạn gặp phải là unicode cho phép nhiều cách để soạn cùng một biểu tượng. Mô-đun Python unicodedata
cung cấp một hàm normalize
cho phép bạn chuyển đổi biểu diễn unicode thành một biểu mẫu
cố định (ví dụ:NFC)
from unicodedata import normalize
S1 = b'\xc4\x83\xcc\x83'.decode('UTF-8')
S2 = b'\xe1\xba\xb5'.decode('UTF-8')
print(normalize('NFC', S1).encode('UTF-8'))
print(normalize('NFC', S2).encode('UTF-8'))
Trong ví dụ của bạn trên tripadvisor được hiển thị ở dạng NFD, trong khi notepad sử dụng NFC.