很多移动端手机输入法都带有emoji和颜文字,丰富了用户表达,但也苦逼了我们。我们做的是一个移动App,可以与相互文字交流。前端用的是HTML5。。。。那一套。发现这一套对表情包的显示没啥毛病,以为解决表情包十分简单。哎呀。。上了输入发的当。。。数据发送到后台,然后存储在转发回来。。崩溃老,乱编。一两天的百度,发现好多网友提供的都是编码编码解决。因为表情包用的是unicode的编码,我们后台是utf-8。先说明一下,后台是用java struts2 tomcat这一套。。表情包中的emoji很好解决,找到了编码表,网友们也提供了编码方法。这些编码的方法的特点是将unicode遍成后台可识别的字符串如“&#。。。。”,如果只是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 + ";";