零宽字符的概念
一种不可打印的Unicode字符, 在浏览器等环境不可见, 但是真是存在, 获取字符串长度时也会占位置, 表示某一种控制功能的字符.
看到这里可能就会产生疑问了,明明长度是3,为什么打印的是7呢?因为abc字符串里面有一些看不见的字符,称为零宽字符。
常见的零宽字符
- U+200B: 零宽度空格符 用于较长单词的换行分隔
- U+FEFF :零宽度非断空格符 用于阻止特定位置的换行分隔
- U+200D:零宽度连字符 用于阿拉伯文与印度语系等文字中,使不会发生连字的
- U+200C :零宽度断字符 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果
- U+200E :左至右符 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右
- U+200F :右至左符 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左
零宽字符的作用
- 数据防爬
将零宽度字符插入文本中,干扰关键字匹配。爬虫得到的带有零宽度字符的数据会影响他们的分析,但不会影响用户的阅读数据。 - 信息传递
将自定义组合的零宽度字符插入文本中,用户复制后会携带不可见信息,达到传递作用。 - 知识产权保护
某些地方使用文字水印,不影响阅读,防止恶意复制刻录