Có ai đó biết một cách dễ dàng để tìm các ký tự trong Unicode giống với ký tự ASCII hay không. Ví dụ là "CYRILLIC SMALL LETTER DZE (ѕ)". Tôi muốn thực hiện tìm kiếm và thay thế cho các ký tự tương tự. Cũng giống như tôi có nghĩa là con người có thể đọc được. Bạn không thể thấy sự khác biệt bằng cách nhìn vào nó.Tìm ký tự ASCII tương tự trong Unicode
Trả lời
Như đã được ghi chú bởi những người bình luận khác, Unicode normalisation ("nhân vật tương thích") sẽ không giúp bạn ở đây vì bạn không tìm kiếm sự tương đương chính thức nhưng đối với điểm tương đồng trong glyphs (hình dạng chữ cái). (Báo cáo kỹ thuật Unicode được liên kết vẫn đáng đọc, vì nó được viết rất tốt.)
Nếu tôi là bạn, hãy dành cho bạn công việc tẻ nhạt khi tự lắp ráp danh sách các ký tự, tôi sẽ tìm kiếm tài nguyên trên homograph attacks: Đây là phương pháp của người dùng web gây hiểu nhầm gây hại bằng cách hiển thị các URL chứa tên miền trong đó một số chữ cái đã được thay thế bằng các chữ cái giống nhau. Một Unicode Technical Report, về bảo mật, có chứa một phần về vấn đề này. Cũng có - và đó có thể là thứ bạn cần nhất - "confusables" table. Dưới đây là một bài viết khác với các dấu chấm câu chủ yếu, một số trong đó có ASCII, có các đối tác tương tự trực quan trong số non-ASCII code tables.
Điều tôi hy vọng là bạn không đặt câu hỏi để xây dựng cuộc tấn công như vậy.
Xem Cơ sở dữ liệu Unicode: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
Mỗi dòng mô tả một caharacter unicode, ví dụ:
1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
Nếu có bất kỳ (tương thích) nhân vật tương tự cho biểu tượng đó, nó sẽ xuất hiện trong <compat>
lĩnh vực nhập cảnh. Trong ví dụ này, 0061
(ASCII a
) tương thích với ký tự Unicode LATIN SMALL LETTER A WITH RIGHT HALF RING
.
Đối với nhân vật của bạn, sự xâm nhập là
0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
đó, như bạn có thể thấy, không chỉ định một nhân vật tương thích.
Trường tương thích mô tả chuỗi ký tự có cùng nghĩa với ký tự được đề cập. Trong ví dụ của bạn, trình tự tương thích sẽ là 'U + 0061' (chữ 'a') theo sau là' U + 02BE' (công cụ sửa đổi 'nửa vòng bên phải'). Đối với các ký tự từ các bảng chữ cái khác nhau, nó sẽ là khá bất thường khi có chuỗi tương thích - và điều đó làm cho những gì OP đang cố gắng làm không thể mà không cần thêm thông tin. – cHao
OP nói 'tương tự như ký tự ASCII', không chính xác. Nếu bạn đang tìm kiếm 'a' bằng nửa vòng bên phải, bạn có thể giải quyết một mã ASCII 'a' nếu không có gì khác. – adamk
Đồng ý - trong trường hợp đó. Nhưng nếu bạn đang tìm kiếm một ASCII char tương tự như một Cyrillic & # x0455 ;, đó là ví dụ OP được sử dụng, điều đó sẽ không hoạt động. – cHao
- 1. Các ký tự Unicode và Ascii có giống nhau không?
- 2. Ký tự ẩn - ASCII
- 3. Tìm tên ký tự Unicode với Javascript
- 4. Ký tự Unicode chuỗi
- 5. Chuyển đổi hai ký tự ascii thành ký tự 'tương ứng' của chúng mở rộng biểu diễn ascii
- 6. Ký tự Unicode: giỏ hàng
- 7. Làm cách nào để tìm loại ký tự hai chiều của ký tự Unicode trong C#?
- 8. Ký tự unicode C++ in
- 9. Làm cách nào để tìm các ký tự Unicode/không phải ASCII trong trường NTEXT trong bảng SQL Server 2005?
- 10. Sử dụng giá trị ký tự UNICODE trong C++
- 11. Các ký tự Unicode Base64ing
- 12. Ký tự Unicode cao nhất?
- 13. UnicodeEncodeError: codec 'ascii' không thể mã hóa ký tự [...]
- 14. Mã ký tự ASCII cho '-' là gì?
- 15. Ký tự Unicode trong bảng Sql
- 16. Bình thường hóa các ký tự ASCII
- 17. Cách tìm kiếm các ký tự không phải ASCII bằng các công cụ bash?
- 18. Tìm kiếm các Tweet bằng Ký tự Unicode/Apple Emoji?
- 19. Chuyển đổi unicode ký tự Cyrillic để chuỗi trong python
- 20. MySQL phù hợp với các ký tự unicode với phiên bản ascii
- 21. Làm cách nào để xử lý các ký tự Unicode (không phải ASCII) bằng Python?
- 22. Ký tự Unicode cho PUZZLE PIECE?
- 23. Sử dụng các ký tự unicode trong tài liệu Haddock
- 24. Biến đổi ký tự unicode dạng dải
- 25. Vẽ các ký tự Unicode trên iPhone
- 26. chr cho các ký tự không phải ASCII trong Python
- 27. Các ký tự giống hệt nhau trong Unicode
- 28. Các ký tự không phải ascii trong URL
- 29. UnicodeEncodeError: codec 'ascii' không thể mã hóa các ký tự
- 30. Ký tự unicode là gì?
Cảm ơn tất cả các liên kết và giải thích tốt. Tôi thực sự cố gắng để bảo vệ chống lại các cuộc tấn công như vậy. :-) Và tôi đoán tôi sẽ tìm thấy một số công cụ hơn nữa với từ khóa "homograph attack". – DrDol
Điều đó là tốt để nghe :). Vâng, đó là từ khóa bạn cần! Tôi đã chỉnh sửa một liên kết (nó chỉ ra một phiên bản lỗi thời). – chryss
Sử dụng hợp pháp: để thử nghiệm quốc tế hóa, tôi có một công cụ tạo văn bản bằng tiếng nước ngoài giả mạo bằng các ký tự trông giống nhau. Một người kiểm tra nói tiếng Anh có thể đọc văn bản "nước ngoài", nhưng họ cũng có thể nói rõ ràng rằng nó không phải là tiếng Anh được mã hóa cứng. Mặc dù nó không hoạt động nếu các ký tự unicode là như vậy tương tự mà bạn không thể nói sự khác biệt. Tôi chủ yếu làm những việc như thêm dấu trọng âm vào nguyên âm. – Kip