在Unicode中查找类似的ASCII字符

问题描述 投票:7回答:2

有人知道在Unicode中查找与ASCII字符类似的字符的简单方法。一个例子是“CYRILLIC SMALL LETTER DZE())”。我想搜索并替换类似的角色。类似的我的意思是人类可读。通过观察你看不出差异。

unicode ascii replace similarity fuzzy
2个回答
11
投票

正如其他评论者所指出的那样,Unicode normalisation(“兼容性人物”)在这里不会帮助你,因为你不是在寻找官方对等,而是寻找字形(字母形状)的相似之处。 (链接的Unicode技术报告仍然值得一读,因为它编写得非常好。)

如果我是你,为了免除你自己组装一个字符列表的繁琐工作,我会在homograph attacks上搜索资源:这是一种通过显示包含域名的URL恶意误导网络用户的方法,其中一些字母已被替换用视觉上相似的字母。关于安全性的另一个Unicode Technical Report包含有关该问题的部分。还有 - 这可能是你最需要的 - 一个"confusables" table。这是另一篇主要是标点符号的文章,其中一些是ASCII,在non-ASCII code tables中具有视觉上相似的对应物。

我所希望的是你不是在问这个问题来构建这样的攻击。


-1
投票

请参阅Unicode数据库:http://www.unicode.org/Public/UNIDATA/UnicodeData.txt

每行描述一个unicode字符,例如:

1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;

如果该符号有任何类似(兼容)的字符,它将出现在条目的<compat>字段中。在此示例中,0061(ASCII a)与LATIN SMALL LETTER A WITH RIGHT HALF RING Unicode字符兼容。

至于你的角色,参赛作品是

0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405

正如您所看到的,它没有指定兼容性字符。

© www.soinside.com 2019 - 2024. All rights reserved.