代码之家  ›  专栏  ›  技术社区  ›  DrDol

在Unicode中查找相似的ASCII字符

  •  7
  • DrDol  · 技术社区  · 14 年前

    有没有人知道一种简单的方法来查找Unicode中类似于ASCII字符的字符。一个例子是 CYRILLIC SMALL LETTER DZE

    2 回复  |  直到 14 年前
        1
  •  14
  •   Tschallacka    6 年前

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

    如果我是你,为了省去你自己整理字符列表的繁琐工作,我会在上面搜索资源 homograph attacks :这是一种恶意误导web用户的方法,显示包含域名的URL,其中某些字母已被视觉上相似的字母替换。另一个 Unicode Technical Report "confusables" table non-ASCII code tables .

    我所希望的是你不要问这个问题来制造这样的攻击。

        2
  •  -2
  •   adamk    14 年前

    请参见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 a )与 LATIN SMALL LETTER A WITH RIGHT HALF RING Unicode字符。

    至于你的角色,条目是

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

    如您所见,它没有指定兼容字符。