正则与文本处理指南
全角转换与 NFKC:归一化范围不同
明确转换全角 ASCII,在需要保持身份时避免过宽的兼容归一化。
转换明确范围的字符
全角 ASCII 字母数字有对应半角字符,转换器也可以处理全角空格。
先用本站宽度转换处理短样例,逐字符检查,再用于标识符。
ABC123 → ABC123 NFKC 不只处理宽度
兼容归一化除宽度外,还可能转换连字、圈号数字等兼容形式。
只转全半角与 NFKC 的结果未必一致,应按数据约定选择范围。
'①'.normalize('NFKC') → '1'
This is a compatibility mapping, not only a width change.检测归一化后的冲突
不同存储字符串可以归一化成同一个值,在用户名或路由空间中会形成冲突。
采用策略前检查全量集合,明确重名是拒绝还是迁移。
保留原始显示文字
搜索可以使用归一化值,同时保留原始显示名;需要两者时应分开存储。
密码或外部签名文本不能临时归一化,双方必须约定完全相同的预处理规则。