很多移动端手机输入法都带有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 + ";"; 
            } else { 
                return char; 
            } 
        }); 
    return str; 
}

但特别提醒一下,该方法是针对32位unicode编码设计,有部分是emoji是16位编码的,找去来,弄个表检索就好。

弄出emoji以为就结束老,颜文字呀!颜文字是用多种语言拼和起的,苦逼老吧,还是要解决unicode存储的问题。数据库用的SqlSever,又痛苦老,找不到unicode....。找到unicode又怎样!看看这些。。。

struts2 已被设置

web 已被设置

html 已被设置

还有汤姆猫,你改,你想翻天吗?

纠结了几天,想了各种方法,自己设计编码,解码。。。然而,js不能对内存进行操作。。都是白忙活。

山重水复疑无路,柳暗花明又一村。。。

解决的办法尽是如此简单。。

其实问题就出在存储上。。。

你要明白一点是java String也是用的unicode,网页也是用的unicode。。只是数据存储这里和给我们显示出来的时候是utf-8,其实内存中它存储的还是页面传输的原始数据,只要我们存储这个原始数据岂不是大功告成。。。

我用的SQLSever2012 测试成功。。

sql 中 varchar =>byte[]  我们获取到String的unicode编码数组,将其存入即可,读出来的时候在将数组以unicode编码写入String。

存。。。

String sql="INSERT INTO [ComRecode] (datetime,groupid,words,userid) VALUES(?,?,?,?)";
  try {
   PreparedStatement pre=connection.prepareStatement(sql);
   byte buf[]=null;
   buf=r.getWords().getBytes("UnicodeBigUnmarked"); //就这里比较关键
 
   pre.setString(1, r.getDatetime());
   pre.setInt(2, r.getGroupid());
   pre.setBytes(3, buf);
   pre.setString(4, r.getPhone());
   
   pre.executeUpdate();
   pre.clearParameters();
   //pre.setBytes(parameterIndex, x);
  } catch (SQLException | UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  }

取。。。。

ResultSet re=state.executeQuery(sql);
   while(re.next())
   {
    Record r=new Record();
    r.setDatetime(ToolTime.df2.format(new Date(re.getTimestamp(1).getTime()))); //就这里关键
    r.setWords(new String(re.getBytes(2),"UnicodeBigUnmarked"));
    r.setPhone(re.getString(3));
    r.setGroupid(groupid);
    recodes.add(r);
   }

其他的模式都没改。。还是一样的用struts2的action,用json..其他一点不动。

结果:

当然。。。数据库你们将看到很多乱码,这个就无所谓老

进过一天的测试补一点。。。存储字节码的时候发现最后一个是大于0x7f无法存入,你们可以试试最后一个是‘的’的情况。。如果是乱码,可能和我遇到老同样的问题,解决办法就是末尾插入读出去掉一个小于0x080的数。。



手机输入法emoji、颜文字存储相关推荐

  1. 关于微信表情及输入法emoji显示问题解决方案

    1.保存数据库报错,数据库字符集修改为mb4,这个网上很多文章说过了 2.微信表情内容为:[微笑]  /::)  中文和英文两种 这个用字符串替换为图片,代码地址:https://github.com ...

  2. 移动前端手机输入法自带emoji表情字符处理

    原文链接 : https://blog.csdn.net/binjly/article/details/47321043 今天,测试给我提了一个BUG,说移动端输入emoji表情无法提交.很早以前就有 ...

  3. 内存占用小的手机输入法_华为手机输入法中6个超实用的小技巧,你没用过就太可惜了!...

    阅读本文前,请您先点击上面蓝色字体"财经史"再点击"关注",这样您就可以免费收到我们的最新内容了,每天都会有更新,完全是免费订阅,请放心关注. 想必大家对华为手 ...

  4. 百度手机输入法for android16,百度手机输入法oppo版

    百度手机输入法oppo版是一款基于OPPO手机开发的输入法,在百度手机输入法oppo版中小伙伴可以享受到一系列非常快捷的输入体验,以及省流量的输入模式,其中百度手机输入法oppo版专门做了省电优化哦, ...

  5. 华为linux输入法,华为手机输入法隐藏7大不为人知的功能,非常规操作,实用又强大!...

    原标题:华为手机输入法隐藏7大不为人知的功能,非常规操作,实用又强大! 你只用华为手机输入法打字?这些隐藏的黑科技功能,如果你还不知道,那就实在是太可惜了,这些非常规操作实用又强大!一起来了解一下吧. ...

  6. 说说各种手机输入法的体验

    手机是华为荣耀8,屏幕5.2寸. 前面说明:由于我经常对各种手机输入法的小毛病不能容忍,并且常常会在9宫格和26键之间切换,故而时常会换各种输入法.目前我手机上有四种输入法,下面一一来说一下各个输入法 ...

  7. android原生输入法皮肤,duang_精选布局_触屏皮肤_皮肤布局_百度手机输入法

    皮肤布局小贴士: 说明: 该皮肤布局仅适用于2.1及以上版本百度手机输入法,不适用于2.0版. 安装前请注意该皮肤布局所适用的手机平台, 如与您的手机平台不符合,使用后可能出现皮肤布局模糊或者过大的情 ...

  8. android 手势输入法,搜狗手机输入法Android 4.6版新增手势操作

    手势操作,让输入更随心 相信绝大多数人都有过这样的经历,在和朋友聊微信.QQ或者互发短信的时候,想要删除或修改一句中的某个字,但移动光标怎么都不能准确移动到那个字的后面(英文字更小就更难点,坑爹啊), ...

  9. 移动端,input输入框被手机输入法解决方案

    移动端,input输入框被手机输入法解决方案 参考文章: (1)移动端,input输入框被手机输入法解决方案 (2)https://www.cnblogs.com/liuhappy/p/8809149 ...

最新文章

  1. php nginx配置404页面,Nginx实现404页面的几种方法
  2. 配置linux系统ip,Linux系统IP地址配置
  3. Q-学习,马克尔决策过程:强化学习
  4. Page.ClientScript.RegisterArrayDeclaration
  5. 日均保护原创超6万篇,腾讯“至信链”助企鹅号作者一键维权
  6. 牛客2022年愚人节比赛,10题做法完整版
  7. Treap树堆(bzoj 3224: Tyvj 1728 普通平衡树)
  8. 商业智能BI的数据价值
  9. MSP432的CCS工程配置以及使用J-Link下载程序
  10. 最全面详细讲解Oracle入门(新手必看)
  11. 网站三级域名是什么样?
  12. ssh登陆忽略known_hosts文件(ssh 登陆提示Host key verification failed.)
  13. 热点综述 | 纵向微生物组研究的统计方法总结
  14. 在.NET实现邮件收发功能(包含源代码)
  15. 人脸识别API/SDK 汇总(转)
  16. Win11自带屏幕录制怎么打开?Win11自带录屏的使用方法
  17. 售后服务的基本流程有哪些
  18. 目前最新《智能社石川 Nodejs+WebSocket+Html5》
  19. 【C语言】【unix c】将自定义转换为环境变量
  20. 关于爱情的几个寓言故事

热门文章

  1. App小程序 时间Note
  2. NYOJ-20 吝啬的国度【深搜】
  3. vim配置set nu
  4. qq互联登录授权php配置,php如何整合qq互联登录
  5. pandas dataframe获取列名、添加列名、列索引
  6. python列表转集合_Pandas把dataframe或series转换成list的方法
  7. 在线登录注册功能(android客户端+javaweb服务端+腾讯云服务器+腾讯云数据库)
  8. cgb2007-京淘day02
  9. 第3课 弹性之城--故事卡--跟阿西莫夫故事接龙
  10. 定性研究的小技巧与注意事项!