Unicode规范化:文字相同却比较不等

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

浅色学习桌、笔记本与课程卡片
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

一个可重复的例子

带重音的é可以由一个预组合字符表示,也可以由字母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
喜欢就支持一下吧
点赞0 分享