文章管理列表

字符串中水印的编码和解码

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

 

posted @ 2020-10-25 23:07  潮哥  阅读(116)  评论(0编辑  收藏  举报