nhìn vào đoạn mã sau:Python unicode bình thường: là nó đúng để dịch u ' xb4' u' u0301'
>>> import unicodedata
>>> from unicodedata import normalize, name
>>> normalize('NFKD', u'\xb4')
u' \u0301'
>>> normalize('NFKD', u'a\xb4a')
u'a \u0301a'
>>> normalize('NFKC', u'a\xb4a')
u'a \u0301a'
>>> name(u'\xb4'), name(u'\u0301')
('ACUTE ACCENT', 'COMBINING ACUTE ACCENT')
Tôi cố gắng để hiểu được nếu hành vi đó để dịch u'\xb4'
-u' \u0301'
là chính xác. Tại sao nó pad kết hợp giọng cấp tính với một không gian? Tại sao nó dịch u \xb4
?
Tại fileformat chúng tôi thấy rằng ACUTE ACCENT
từng được gọi là SPACING ACUTE
. Tôi nghĩ, nó chỉ có nghĩa là con trỏ sẽ di chuyển thay vì đợi ký tự sau được nhập vào.
UPD: trong trường hợp ai đó quan tâm, đây là danh sách nếu các ký tự unicode sau khi chuẩn hóa NFKC có khoảng trắng phần đầu: http://pastebin.com/Z99r5AK9
rất thú vị, cảm ơn bạn! – newtover
U + 00B4 ACCUTE ACCENT và U + 02CA MODIFIER LETTER ACUTE ACCENT là các ký tự riêng biệt và không được mong đợi là “được hiển thị giống nhau”. Cái cũ thường xuất hiện nhiều hơn trong các phông chữ. Khi cả hai đều có mặt, chúng thường trông giống nhau hoặc giống nhau, nhưng chúng có các thuộc tính khác nhau được xác định trong Tiêu chuẩn Unicode (ví dụ: Biểu tượng danh mục chung, Công cụ sửa đổi so với Thư, Công cụ sửa đổi). Và, ví dụ, trong phông chữ Doulos SIL, glyphs của chúng dường như giống hệt nhau nhưng độ rộng trước là khác nhau; và ở MingLiU, các sườn dốc rất khác nhau. –
@ JukkaK.Korpela: Tôi đã sửa chữa; Tôi phải hiểu lầm bối cảnh, tôi sẽ loại bỏ phần đó. –