零宽字符

596 阅读2分钟

零宽字符的概念

一种不可打印的Unicode字符, 在浏览器等环境不可见, 但是真是存在, 获取字符串长度时也会占位置, 表示某一种控制功能的字符.

图片.jpg

看到这里可能就会产生疑问了,明明长度是3,为什么打印的是7呢?因为abc字符串里面有一些看不见的字符,称为零宽字符。

常见的零宽字符

  1. U+200B: 零宽度空格符 用于较长单词的换行分隔
  2. U+FEFF :零宽度非断空格符 用于阻止特定位置的换行分隔
  3. U+200D:零宽度连字符 用于阿拉伯文与印度语系等文字中,使不会发生连字的
  4. U+200C :零宽度断字符 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果
  5. U+200E :左至右符 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右
  6. U+200F :右至左符 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左

零宽字符的作用

  1. 数据防爬
    将零宽度字符插入文本中,干扰关键字匹配。爬虫得到的带有零宽度字符的数据会影响他们的分析,但不会影响用户的阅读数据。
  2. 信息传递
    将自定义组合的零宽度字符插入文本中,用户复制后会携带不可见信息,达到传递作用。
  3. 知识产权保护
    某些地方使用文字水印,不影响阅读,防止恶意复制刻录