两段文字显示相同,底层却可能由不同的Unicode码位组成。整理跨平台文件名或文本时,先确认这是表示方式差异,还是确实不同的字符。

一个可重复的例子
带重音的é可以由一个预组合字符表示,也可以由字母e加组合重音表示。直接比较两个字符串可能得到False,规范化到同一种适当形式后才相等。示例只比较字符串,不修改真实文件名。
规范化不是所有文字问题的万能修复
NFC与NFKC处理的等价范围不同,不能随意互换。规范化也不等于忽略大小写,更不能识别所有视觉近似的冒充字符。账号标识、法律名称和密码等数据,尤其需要遵守各自的处理规则。
批量整理前先检查冲突
如果计划规范化文件名,应先生成旧名与新名的对应表,找出多个旧名是否会映射为同一结果。不要自动覆盖冲突项,也不要把未经备份的真实目录当练习。先用少量样例验证目标平台的实际行为。
可以运行的练习
import unicodedata
first = "é"
second = "é"
assert first != second
assert unicodedata.normalize("NFC", first) == unicodedata.normalize("NFC", second)
print(len(first), len(second))
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:Unicode规范化。资料查阅日期:2026年9月26日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年9月26日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






