DIV 设置可编辑 contenteditable=true
<div contenteditable=true id="divTest"></div>
数据库存入需要将表设置为utf8mb4 编码格式
如果对数据处理,例如转为json数据,emoji 表情将无法存入数据库,需要对 emoji 表情做转码处理
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; }
从数据库取出做解码处理
//表情解码 function uncodeUtf16(str){ var reg = /&#.*?;/g; var result = str.replace(reg,function(char){ var H,L,code; if(char.length == 9 ){ code = parseInt(char.match(/[0-9]+/g)); H = Math.floor((code-0x10000) / 0x400)+0xD800; L = (code - 0x10000) % 0x400 + 0xDC00; return unescape("%u"+H.toString(16)+"%u"+L.toString(16)); }else{ return char; } }); return result; }