emoji表情進行編碼以適配移動端使用者emoji表情的輸入和展示
阿新 • • 發佈:2020-07-24
功能介紹:使用者輸入emoji表情,如輸入法裡的附帶的表情,然後前端這裡編碼這些表情成特定格式的字元,傳到後端。之後從介面拿到後直接html渲染即可。
問題所在:移動端使用者輸入emoji表情,如果未做編碼就提交到後端的話,是不能成功提交的。需要先編碼才行。
編碼
/** * 用於把用utf16編碼的字元轉換成實體字元,以供後臺儲存 * @param {string} str 將要轉換的字串,其中含有utf16字元將被自動檢出 * @return {string} 轉換後的字串,utf16字元將被轉換成&#xxxx;形式的實體字元 */ function utf16toEntities(str) { var patt=/[\ud800-\udbff][\udc00-\udfff]/g; // 檢測utf16字元正則 str = str.replace(patt, function(char){ var H, L, code; if (char.length===2) { H = char.charCodeAt(0); // 取出高位 L = char.charCodeAt(1); // 取出低位 code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00; // 轉換演算法 return "&#" + code + ";"; } else { return char; } }); return str; }
渲染
直接以html形式渲染 <div v-html="content"></div>