文章管理列表
字符串中水印的编码和解码
const zeroPad = num => "00000000".slice(String(num).length) + num; const textToBinary = username => ( username.split('').map(char => { console.log(char.charCodeAt(0)) return zeroPad(char.charCodeAt(0).toString(2)) }).join(' ') ); const binaryToZeroWidth = binary => ( binary.split('').map((binaryNum) => { const num = parseInt(binaryNum, 10); if (num === 1) { return '\u200b'; // zero-width space } else if (num === 0) { return '\u200c'; // zero-width non-joiner } return '\u200d'; // zero-width joiner }).join('') // zero-width no-break space ); const zeroWidthToBinary = string => ( string.split('').map((char) => { // zero-width no-break space if (char === '\u200b') { // zero-width space return '1'; } else if (char === '\u200c') { // zero-width non-joiner return '0'; } return ' '; // add single space }).join('') ); const binaryToText = string => ( string.split(' ').map(num => String.fromCharCode(parseInt(num, 2))).join('') );
零宽空格(zero-width space, ZWSP)用于可能需要换行处。 Unicode: U+200B HTML: ​ 零宽不连字 (zero-width non-joiner,ZWNJ)放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制。 Unicode: U+200C HTML: ‌ 零宽连字(zero-width joiner,ZWJ)是一个控制字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。 Unicode: U+200D HTML: ‍ 左至右符号(Left-to-right mark,LRM)是一种控制字符,用于计算机的双向文稿排版中。 Unicode: U+200E HTML: ‎ ‎ 或‎ 右至左符号(Right-to-left mark,RLM)是一种控制字符,用于计算机的双向文稿排版中。 Unicode: U+200F HTML: ‏ ‏ 或‏ 字节顺序标记(byte-order mark,BOM)常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的标记。 Unicode: U+FEFF