第一种:在存取时进行编码:(我本次使用的方式)

存储时编码:emoji_encode

/**对表情转义**/
function emojiEncode(e){var n = /[\ud800-\udbff][\udc00-\udfff]/g;// 检测utf16字符正则return e = e.replace(n, function (e) {var n, r;return 2 === e.length ? (n = e.charCodeAt(0), r = e.charCodeAt(1),"&#" + (1024 * (n - 55296) + 65536 + r - 56320) + ";") : e})
}

取数据时解码:

/**对表情解码**/
function emojiDecode(e){var n = /\&#.*?;/g;//获取数据库种16进制的数据//然后进行解码操作return e.replace(n, function (e) {var n, r, t;return 9 == e.length ? (t = parseInt(e.match(/[0-9]+/g)), n = Math.floor((t - 65536) / 1024) + 55296, r = (t - 65536) % 1024 + 56320, unescape("%u" + n.toString(16) + "%u" + r.toString(16))) : e})
}

上边两个方法我们是把他们放在了公共js种,可以直接调用,如我们项目中的调用存储编码方法的方式:

初始化时获取数据使解码后的数据回显:

最后回显后的效果如下图:

第二种:在前端编码解决(本方案输入框可以输入存储,但是读取后无法再放入输入框编辑,直接展示没有问题:

    在input输入框里面添加上键盘自带表情符后,发送给后台服务器会显示服务异常,网上有给出解决方法,表情编码是16进制的,而我们用的是8进制的所以保存才会报错。将表情符转码成就能够ok:

解决存储问题的方法(即就是把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;// 转换算法var ss = "&#" + code + ";";return ss;} else {return char;}});        str = str.replace(/&#/g,'^^');return str;}

解决回显的问题(即把库里的表情数据解码为16进制便于回显):

/**表情解码**/
function entitiestoUtf16(str){// 检测出形如〹形式的字符串var strObj=utf16toEntities(str);strObj = strObj.replace(/\^\^/g,'&#');var patt = /&#\d+;/g;var H,L,code;var arr = strObj.match(patt)||[];for (var i=0;i<arr.length;i++){code = arr[i];code=code.replace('&#','').replace(';','');// 高位H = Math.floor((code-0x10000) / 0x400)+0xD800;// 低位L = (code - 0x10000) % 0x400 + 0xDC00;code = "&#"+code+";";var s = String.fromCharCode(H,L);strObj.replace(code,s);}return strObj;} 

VUE + H5前端文本框输入和展示 表情解决方案-----编码格式转换相关推荐

  1. 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  2. 已解决selenium模块向网页input文本框输入内容失败问题

    已解决(selenium向input文本框输入内容失败问题)selenium.common.exceptions.ElementNotInteractableException: Message: e ...

  3. java 限制文本框长度_java中限制文本框输入长度的显示(转载)

    我最近在网上看到一篇文章很不错,对于限制文本框输入长度的显示很方便 JAVA不像C#能够有maxLength这个属性对文本框的输入长度进行控制,但也是有办法实现相应的功能的. 写一个MyDocumen ...

  4. 简单的文本框输入实时计数

    2019独角兽企业重金招聘Python工程师标准>>> 简单的文本框输入实时计数 $(function(){suminput('idea','60');})//记录输入字符方法fun ...

  5. [正则表达式]文本框输入内容控制

    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n ...

  6. html ip输入框效果,html5 input文本框输入动画特效

    特效描述:文本框输入动画 动画特效.几个更鼓舞人心的风格为文本框输入动画包括一些新技术和新思想. 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 Manami Username Web ...

  7. Java集合框架上机练习题:用户分别从两个文本框输入学生的姓名和分数.............

    编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中. import java.awt.FlowLayout; import java.a ...

  8. html未填写提示,文本框输入信息,未输入的文本框会提示输入,并且未输入的文本框会变红...

    一 实现分销商注册页面文本框输入错误信息或者不输入会提示错误,填写好的文本框的文本会显示,并且空文本框会变红,输入的错误信息不但文本框变红,里面的文本会变蓝 实现思路:前台输入的信息会传给后台,后台接 ...

  9. QT限制文本框输入的方法

    QT限制文本框输入的方法 界面编程的时候,对文本框的处理往往是个很头疼的事情: 一是焦点进入文本框时,从人性化考虑,应选择文本框中文本,方便输入: 二是,限制文本框的输入,只允许输入有效的文本,如果不 ...

最新文章

  1. eclipse使用tomcat进行部署时编译代码不一致的处理
  2. OFFICE OUTLOOK 2007 如何设置开机自动启动
  3. One order error message log and storage
  4. [SpringSecurity]web权限方案_用户认证_设置用户名密码
  5. android层级关系图,画出 View 的层级 3D 图和树形图来分析层级关系
  6. Info.plist与Prefix.pch修改文件位置遇到的问题及解决方法
  7. 晚上:上课笔记,听完自己独立完成
  8. mysql如何更改文件所有者sa_Mssql Server2005中更改sa的用户名的多种方法
  9. “商圈合伙人”让异业联盟无边界化,打造共赢生态圈
  10. 航天信息上传参数设置服务器设置,金税盘上传参数怎么设置?
  11. AI教程视频《AI illustrator入门到精通》零基础自学教程教学
  12. 驱动精灵修复服务器,驱动精灵系统漏洞需要修复吗
  13. Axis2 报错 Faulty Services
  14. 【XSY3325】社保(拓扑序)
  15. vue的v-for循环中图片加载路径问题
  16. 系统学习机器学习之维度归约(完整篇)
  17. 哈工大 计算机系统 一纸开卷CSAPP
  18. 用html做成的音频播放器,HTML5制作酷炫音频播放器插件图文教程
  19. [leetcode] 质因数分解
  20. Linux上配置SVN使用http访问

热门文章

  1. Conflict with dependency 'com.android.support:support-annotations'解决方案
  2. Java collect()方法
  3. 学习笔记(15):C#急速入门-艾特符号修饰的字符串
  4. python数组求和_Python NumPy中的数组求和函数sum | 坐倚北风
  5. 青云QingCloud放飞数据潜能,NeonSAN用上了“黑科技”
  6. asynchttpclient 超时_韩服正式服3.28版本:新手模式超时空漩涡实装amp;新竞技副本...
  7. Java jlabel设置边距_java在jlabel 边框边缘上添加文字
  8. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-8
  9. Windows AD域用户属性对照表(综合整理)
  10. Myeclipse上传至码云