Hasty Briefsbeta

双语

Unicode Footguns in Python

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