在不同的字母表中有一些字母,看起来完全一样。
喜欢拉丁语中的A
和西里尔语中的А
。
当我通过utf-8脚本调用其中一个时,他们是否扮演同样的角色?
如果不是,如何知道给定字母的代码?
答案 0 :(得分:7)
“扮演同样的角色”并不清楚你的意思。
它们肯定不是同一个角色,虽然它们似乎可能在渲染时出现。
这与许多字体中“l”(小写L)和“I”(大写i)之间的混淆完全类似。
如果您想将A
和А
视为相同,则必须将西里尔语音译为拉丁语。不幸的是,PHP对音译的支持是粗略的。您可以使用iconv
,这不是很好 - 如果您音译为ASCII,您将丢失无法用ASCII表示的所有。
Unicode PHP实现(本应该是PHP 6)有一个名为str_transliterate
的函数,它使用了ICU音译API。希望音译将在未来添加到intl扩展(当前的ICU包装器)中。
答案 1 :(得分:1)
您可能对ICU中的“spoof detection”API感兴趣。我认为它的目的是报告你的两个“视觉上容易混淆”。