Java 用相应的英文字母替换特殊字符

Java 用相应的英文字母替换特殊字符,java,unicode,fuzzy-search,unicode-normalization,phonetics,Java,Unicode,Fuzzy Search,Unicode Normalization,Phonetics,正在寻找一个实现或库(最好是Java),它将Unicode文本(如以下)转换为相应的ASCII英文字符: ʀᴇɢɪꜱᴛʀᴀᴛɪᴏɴ 以下内容应转换为: 登记 但是请注意,还有其他可能转换的字符,如“cσdє” 最后的目标是做一个酚/模糊匹配,但是我相信一旦字符是真正的ASCII英语,这就变得很容易了。事实证明它们被称为同音字,所以我们正试图防止同音字/同音字攻击 我发现这个库是一个很好的解决方案的起点;它们提供了很好的映射,但不完全能够真正阻止垃圾邮件 社区共享并完成这样的unicode到拉丁语

正在寻找一个实现或库(最好是Java),它将Unicode文本(如以下)转换为相应的ASCII英文字符:

ʀᴇɢɪꜱᴛʀᴀᴛɪᴏɴ

以下内容应转换为:

登记

但是请注意,还有其他可能转换的字符,如“cσdє”


最后的目标是做一个酚/模糊匹配,但是我相信一旦字符是真正的ASCII英语,这就变得很容易了。

事实证明它们被称为同音字,所以我们正试图防止同音字/同音字攻击

我发现这个库是一个很好的解决方案的起点;它们提供了很好的映射,但不完全能够真正阻止垃圾邮件


社区共享并完成这样的unicode到拉丁语的映射文件将是一件好事。

好吧,最大的问题是您需要知道映射到其他字符的内容。实际上,进行替换只需调用
replaceAll
@Ben即可。我有一个大约60个字符串的示例,我可以实现一个覆盖整个“已知”集的字符映射。然而,由于角色太多,我正在检查是否有人已经对此进行了研究。这里有一个相关帖子: