Unicode Footguns in Python
7 months ago
- #Python
- #Unicode
- #Text Processing
- Unicode字符可能看起来相同但底层码点不同,这种现象称为规范等价。
- Python的unicodedata.normalize()函数通过将字符串转换为NFC(组合形式)或NFD(分解形式)来标准化字符串,确保准确比较。
- Python中字符串长度统计的是码点而非视觉字符,需要标准化或字素簇处理才能准确反映视觉表现。
- 零宽空格(U+200B)等不可见字符会导致解析问题,使用repr()而非print()可揭示其存在。
- 同形文字攻击利用Unicode视觉相似性进行欺骗,例如在钓鱼域名中使用西里尔字母冒充拉丁字母。