刚开始写的时候没有注意到发送表情的特殊情情况 只考虑了 发送图片 文字 语音 情况 后来测试 在发送文字的时候 添加 手机自带的 表情 发现发过去之后表情不见了 查看数据库之后发现根本就没有存入进去 后来经过调试发现表情是utf16 的一个编码方式 所以之前发送存入数据库的时候就会出现错误而将表情舍弃掉 所以后来的解决方法为在将发送内容传输至后台处理之前就将表情转码 utf16位的转码:
(如下)
//将16进制的表情转码 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; }
转码过之后在将之存入数据库 在显示到手机上发现一切正常
效果就是这样喽 用到的老铁可以试一下 bingo!!