最近我注意到一个用户名在我的 Web 服务上被阻止,因为它与我放置在那里的用于将字符限制为字母、数字和某些符号的正则表达式过滤器不匹配。字符串是 Dong,事实证明,在我的游戏中,用户必须将 Unicode 字符串粘贴到文本输入字段中,这是我之前没有考虑过的。
我做了一些研究并注意到 C# Regex 是 Unicode 感知的,我可以添加 \p{L}\p{M}\p{Z}\p{N} 以允许更多组合,但我仍然不会不确定我允许或不允许所有适当的组合。特别是我希望能够阻止使用某些可能会冒犯年轻玩家(或老玩家)的词。现在我有一个坏词过滤器,我在用户完成输入后应用它,它可以很好地阻止大多数尝试制作令人反感的用户名,但只有(我现在意识到)如果他们使用 ASCII 来编写它。
考虑到某些 Unicode 字符没有以游戏选择的特定字体表示,并且某些 Unicode 组合实际上会弄乱您的显示对齐,其他游戏如何处理这个问题?