放宽用户名中允许字符的限制是最古老的功能请求之一。从 Discourse 2.3.0.beta9 开始,终于可以在用户名和组名中使用 Unicode 字符了。
新增站点设置
有两个新的站点设置:allowed unicode username characters(允许的 Unicode 用户名字符)和 unicode usernames(Unicode 用户名)。
allowed unicode username characters 允许您仅允许特定的 Unicode 字符(例如 [äöüßÄÖÜẞ] 或 \p{Greek})。默认情况下,Discourse 允许字母(Ll / Lm / Lo / Lt / Lu)、标记(Mc, Me, Mn)和数字(Nd, Nl),但_不包括_ No。此设置可以限制这些字符,但无法添加额外的字符。此外,也无法禁止 ASCII 字母和数字。
您应根据社区的需求进行定制,仅允许社区所用语言所需的字符和脚本。
如果您想了解更多关于正则表达式中的 字符类 和 字符属性 的信息,请参阅 Ruby 文档。
unicode usernames 默认处于禁用状态,我们强烈建议您在启用它之前先配置 allowed unicode username characters 设置,以防止 同形用户名欺骗。
允许的示例值:
- zh_CN 中文:
[\p{Han}] - zh_TW 中文:
[\p{Han}] - ko 仅韩语:
[\p{Hangul}] - jp 日语:
[\p{Han}\p{Katakana}\p{Hiragana}] - jp 日语(仅限片假名):
[\p{Katakana}] - fi 芬兰语:
[åäöÅÄÖ] - cs 捷克语:
[ěščřžýáíéóůúďťň]
字母头像服务
字母头像服务已更新,我们添加了对生成最常用脚本头像的支持。如果您发现您的语言缺少头像,欢迎在 GitHub 上提交拉取请求,从 Google Noto 字体 系列中添加字体。
仅当启用了 external system avatars enabled(启用外部系统头像)站点设置时,才能启用 unicode usernames,因为内部头像生成器不支持 Unicode。如果您无法或不想依赖外部服务,可以运行自己的 字母头像服务 实例。
须知…
Discourse 在验证用户名长度(min username length 和 max username length 站点设置)时,计算的是 字素簇(“用户感知的字符”),而不是 Unicode 码位。字母头像服务也使用用户名的第一个字素簇来生成头像。
您还应该查看 reserved usernames(保留用户名)站点设置。既然您的论坛现在支持用户名中的 Unicode,您可能需要添加额外的保留用户名。
反馈
您是否为社区启用了 Unicode 用户名?我们很希望能听到您的反馈。
此外,我们想为 Discourse 支持的每种语言设置 unicode username character whitelist(Unicode 用户名字符白名单)的合理默认值。欢迎在回复中建议正则表达式。


Unicode username does enable more names to be fake as admin/moderator.