对零宽度字符完全没有头绪的可以先玩下这个Demo
什么是零宽度字符?
零宽度字符是一些不可见的,不可打印的字符。它们存在于页面中主要用于调整字符的显示格式,下面就是一些常见的零宽度字符及它们的unicode码和原本用途:
- 零宽度空格符 (zero-width space)
U+200B
: 用于较长单词的换行分隔 - 零宽度非断空格符 (zero width no-break space)
U+FEFF
: 用于阻止特定位置的换行分隔 - 零宽度连字符 (zero-width joiner)
U+200D
: 用于阿拉伯文与印度语系等文字中,使不会发生连字的字符间产生连字效果 - 零宽度断字符 (zero-width non-joiner)
U+200C
: 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果 - 左至右符 (left-to-right mark)
U+200E
: 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右 - 右至左符 (right-to-left mark)
U+200F
: 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左
零宽度字符能做什么?
1. 传递隐密信息
利用零宽度字符不可见的特性,我们可以用零宽度字符在任何未对零宽度字符做过滤的网页内插入不可见的隐形文本。下面是一个简单的利用零宽度字符对文本进行加密
与解密
的JavaScript
例子:
加密
// 为了代码的简洁与易读性,以下代码会忽略性能方面考量
const text = '123?';
// Array.from 能让我们正确读取宽度为2的Unicode字符,