Unicode сравнение кириллицы 'С' и латинского 'C'
У меня есть набор данных, который смешивает использование символов Unicode \u0421, 'С' и \u0043, 'C'. Есть ли какое-то сравнение в юникоде, которое считает эти два символа одинаковыми? До сих пор я пробовал несколько сборов ICU, в том числе и русский.
2 ответа
Не существует сравнения Unicode, которое рассматривает символы как одинаковые на основе визуальной идентичности глифов. Тем не менее, технический стандарт Unicode № 39 " Механизмы безопасности Unicode" имеет дело с "путаницами" - символами, которые могут быть перепутаны друг с другом из-за визуальной идентичности или сходства. Он включает в себя файл данных с изменяемыми значениями, а также "намеренно смешиваемыми" парами, то есть "символами, символы которых в любом конкретном шрифте, вероятно, будут иметь одинаковую форму при использовании согласованного дизайна шрифта", который в основном состоит из пар латинского и Кириллические или греческие буквы, такие как C и С. Вы, вероятно, должны были бы кодировать свое использование этих данных, так как ICU, похоже, не имеет ничего общего с концепцией, которую можно спорить.
Когда вы посмотрите на http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt, вы увидите, что некоторые позиции кода аннотированы для кодовых точек, которые похожи в использовании; Тем не менее, я не знаю ни одного обширного списка, который охватывает визуальные сходства между сценариями. Вы можете искать подделку URL-адресов с помощью преднамеренных орфографических ошибок, которые обсуждались, когда они придумали punycode. кроме этого, вам лучше всего искать в данных символы, которые не соответствуют ожидаемым, с помощью регулярных выражений, и скомпилировать ряд специальных текстовых фиксаторов, таких как text = text.replace /с/, 'c'
,