基于emoji 国际通用表情在web上的输入与显示的记录

定义:

  emoji 即国际通用表情

场景:

1,ios,android,wp上emoji表情输入与显示

2,web也需作为支撑平台对emoji表情就行输入与显示(解析)

问题:

1,app端输入的表情在web端显示的是乱码(比如方括号,问号,和实际编码有关)

2,mysql 存储emoji报异常(0xF0 0x9F 0x8F 0x8),此记录不做问题处理,请参考http://blog.csdn.net/qdkfriend/article/details/7576524

解决:暂且对web显示(问题1)的处理

所需js库,按顺序依赖

emoji-list-with-image.js 存储emoji编码和表情图片数据,格式如["e415","1f604","iVBORw0KGg..."]

punycode.js 编码解析库

emoji.js  解析emoji编码

示例用法

 //解析存储的emoji表情
function parse(arg) {
    if (typeof ioNull !=‘undefined‘) {
        return  ioNull.emoji.parse(arg);
    }
    return ‘‘;
};
 //反解析(web上,图片数据转为emoji字符编码存储)
function decode(htmlStr) {
    //todo 正则替换性能更优?unicode16="1f603"
    if (typeof ioNull == ‘undefined‘) {
        return ‘‘;
    }
    var tempStr = htmlStr, unis = ‘‘, $imgs = $(‘<div>‘).append(htmlStr).find(‘img‘);
    $.each($imgs , function (i, o) {
        var $img = $(o);
        var unicode16 = ‘0x‘ + $img.attr(‘unicode16‘); //十六进制
        unicode16 = ioNull.emoji.decodeChar(unicode16);
        //unis += unicode16;
        tempStr = tempStr.replace($(‘<div>‘).append($img).html(), unicode16);
    });
    //System.log(unis)
    return tempStr;
};

emoji.js 提供了getEmojiList 方法,获取所有类别的emoji数组集合,其中单项格式为[0: "e415",1: "1f604",2: "emoji对应的base64图片数据"]

//示例生成emoji图片输入
function renderEmoji()
{
var emos = getEmojiList()[0];//此处按需是否生成所有emoji
            var html = ‘<div >常用表情</div><ul>‘;
            for (var j = 0; j < emos.length; j++) {
                var emo = emos[j];
                var data = ‘data:image/png;base64,‘ + emo[2];
                if (j % 20 == 0) {
                    html += ‘<li class="">‘;
                } else {
                    html += ‘<li>‘;
                }
                html += ‘<img style="display: inline;vertical-align: middle;" src="‘ + data + ‘"  unicode16="‘ + emo[1] + ‘" /></li>‘;

            }
//.......
}

至此主要emoji解析与反解析已得到处理

附上js库压缩包下载http://files.cnblogs.com/jtans/emoji-lib.zip

时间: 2024-10-11 11:37:07

基于emoji 国际通用表情在web上的输入与显示的记录的相关文章

基于吉日嘎底层架构的通用权限管理Web端UI更新:参考DTcms后台界面

经一周的研究学习,看了国内的H+.HUI等,国外的PaperDashboardPro.Make.Metronic BootStrap等,最终选定用一个轻量的,适合中国人的,来自DTcms的后台管理UI来改造吉日嘎拉的通用权限管理Web端的UI. js+css+图片文件如下 新增一个Menu.ashx文件,用于输出当前用户权限可以查看的所有菜单. 新增Main.aspx文件用于主框架,所有内容也放在名为fraContent的iframe中.其它涉及的登录跳转小修改暂时略过. 有图有真相,先上图:

Web上传文件的原理及实现

现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload.还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2在底层也使用了Commons FileUpload). 虽然现在有很多上传组件可以利用,但是了解Web上传文件的原理,对于处理突然出现的问题会有很大的帮助,下面就来讲一下通过浏览器上传文件的基本原理.在了解了原理之后,就可以非常容易地自制满足自身需要的上传组件了. 众所周知,在客户端代码中需要使用<

[转]文件上传原理:Web上传文件的原理及实现

现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的CommonsFileUpload.还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2在底层也使用了CommonsFileUpload).在asp.net中也有相应的上传文件的控件. 虽然现在有很多上传组件可以利用,但是了解Web上传文件的原理,对于处理突然出现的问题会有很大的帮助,下面就来讲一下通过浏览器上传文件的基本原理.在了解了原理之后,就可以非常容易地自制满足自身需要的上传组件

web上种图片应用的优缺点

web中承载信息的主要方式就是图片与文字了,以下就是对一些web图片格式的优缺点进行归纳. 1.GIF GIF图是比较古老的web图片格式之一,可以追溯到1987,几乎所有的浏览器都支持这一种格式,老有老的好处嘛.GIF是一种索引色模式图片,所以GIF每帧图所表现的颜色最多为256种.GIF能够支持动画,也能支持背景透明,这点连古老的IE6都支持,所以在以前想要在项目中使用背景透明图片,有一些方案就是生成GIF图片.GIF与JPEG.PNG相比,在通常情况下确实体积比较小.不过里面如果放入了足够

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

在zabbix web上进行监控主机配置

前面的文档已经介绍过zabbix的理论知识.zabbix_server/zabbix_agent部署配置.zabbix_web的简单配置.Linux上的agent主机添加,这篇博客来介绍Wzabbix web上监控主机配置流程. 下图是Zabbix Web上的配置截图,下面给大家介绍一下配置相关的信息.具体配置的步骤见后续文档. 相关术语解释: hostgroup:主机组 host:主机,即被监控设备 application:应用,即同类别的多个item所形成的组: item:监控项,key+参

基于Spring设计并实现RESTful Web Services(转)

基于Spring设计并实现RESTful Web Services 在本教程中,你将会使用Spring来创建一个具有生产力的RESTful网络服务. 为什么用RESTful网络服务? 从和Amazon Web Services的整合,到聚合多个数据源,RESTful网络服务遵从了Roy Fielding的架构风格的指导方针,提供了简单.高效的web APIs,支持的API用户数量从少量到百万级别. 你要实现一个RESTful风格的网络服务,可能会是因为: 你正在创建一个API,而客户端需要通过网

基于tomcat-jQ-springMVC-bootstrap的公司产品管理WEB应用

基于tomcat-jQ-springMVC-bootstrap的公司产品管理WEB应用 管理员登录后台以后才能操作 ,权限管理只有一个管理员, 系统的主要作用是查看所有的 “公司列表”, 并查看该公司的”产品“, 用户可以对该公司的产品进行添加或者删除, 添加或者删除公司等 , 添加产品和删除产品等功能: 主界面如下: 添加公司产品的界面截图: 添加公司的功能界面: 项目中就包含了两个实体类, 偷懒的小妖精: 公司实体类: 运行下面代码 产品类型实体类: 运行下面代码 数据库设计了三个表, 对应

基于Jax-WS和Mysql数据库的WEB服务开发

基于Jax-WS和Mysql数据库的WEB服务开发 1 简介 近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术.Java的Webservice技术更是层出不穷,比较流行的有:Axis2,XFire以及JaxWS. JAXWS适合几乎所有Webservice客户端的调用,因此不少巨头型的厂商如:IBM,Weblogic等,在他们的产品上都使用了以JAXWS为标准的Webservice接口. 另外,由于实验室的项目目前采用