微信小程序中使用emoji表情相关说明

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本帖将聚合一些跟emoji表情有关的知识;相关文章:“i爱记账” 小程序后端开发小结 第7条经验前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击,另外emoji字体表情库应该使用base64_encode编码,拿信息的时候base64_decode解码即可。

相关组件: wxParse:集成了emoji表情组件; WxEmojiView-微信小程序Emoji展示输入组件 纯微信小程序 emoji解析组件 **相关demo: ** 小程序学习用demo推荐:雨碎江南;emoji,评论(适用1221)**相关讨论: ** 小程序Emoj解析 现在在采用Emoj这套组件开发 改装后台返回的表情数据 遇到个问题就是 循环出来的数据始终是一样的 不知道还需要从哪儿修改.请大神指点

var WxEmoji = require('../../WxEmojiView/WxEmojiView.js');var  list = [{microblog_id: "274", //主微博IDsendUserInfo:{content: "数据1 ~![01][02]"}},{microblog_id: "274",sendUserInfo:{content: "数据2 ~![03][04]"}},{microblog_id: "274",sendUserInfo:{content: "数据3~![05][06]"}}];
//先将中括号替换为可解析的::
for(var i = 0;i<list.length;i++){var dt = list;var str = dt.sendUserInfo.content;// var str2 = str.replace(/[\[\]]/g,':');var str2 = str.replace(/\[([^\[\]]+)\]/g,':$1:');dt.sendUserInfo.content = str2;
}
Page({data:{list:""},onLoad: function(){var that = this;WxEmoji.bindThis(this);for(var i = 0;i<list.length;i++){WxEmoji.buildTextObjs(that,list.sendUserInfo.content);//使用生成文字list.sendUserInfo.content = "";//清空默认的原文字}that.setData({list:list});},
})

//模板文件循环

<block wx:for="{{list}}">
<view class="msg"><view class="ty flex-1"><view class="user_name">张三<text class="user_sex_level_male">21</text><text class="time">刚刚</text></view><view class="user_apartment">天通北苑店</view></view><view class="ty user_msg mt0"><import src="../../WxEmojiView/WxEmojiView.wxml"/><template is="WxEmojiView" data="{{WxEmojiObjs}}"/></view>
</view>
</block>

回答者:Di 目前WxEmojiView我一直没有更新,目前处于alpha0.1版本,所以不建议直接使用。

比较好的方案是,你从WxEmojiView的处理过程中借鉴并改造在你的小程序中

既然已经使用,那么问题定位 这个问题是因为我当时并没有考虑多行使用的方案,所以我当时暴漏的时候没有暴漏出相关多数据方法

WxEmoji.buildTextObjs(that,list.sendUserInfo.content);//使用生成文字

wxEmojiView的源码中我只做了但数据处理,所以只会显示最后一条数据,而且都是一样的

function buildTextObjs(e,str){var temObjs = {};temObjs.WxEmojiTextArray = transEmojiStr(str);__this.setData({WxEmojiObjs:temObjs//这里直接返回了一个WxEmojiObjs});
}

解决方案 改造方法,是建立在你不是用其他功能的基础上

//1.改造方法buildTextObjs
function buildTextObjs(e,str){var temObjs = {};temObjs.WxEmojiTextArray = transEmojiStr(str);return temObjs;
}
//2.使用方法
Page({data:{list:""},onLoad: function(){var that = this;WxEmoji.bindThis(this);for(var i = 0;i<list.length;i++){//改造这里list.sendUserInfo.content = WxEmoji.buildTextObjs(that,list.sendUserInfo.content);}that.setData({list:list});},
//3: 模版使用
<block wx:for="{{list}}">
<view class="msg"><view class="ty flex-1"><view class="user_name">张三<text class="user_sex_level_male">21</text><text class="time">刚刚</text></view><view class="user_apartment">天通北苑店</view></view><view class="ty user_msg mt0"><import src="../../WxEmojiView/WxEmojiView.wxml"/><template is="WxEmojiView" data="{{WxEmojiObjs:item.sendUserInfo.content}}"/></view>
</view>
</block>

**相关讨论:**带图片的微信昵称存数据库乱码或存不进去的解决办法(作者:刘冰华)很多用户的昵称都带有小图标 

如果将emoji表情直接存入utf8编码的数据库,会报错,存不进去。

因为编码方式不同

解决方法:

存之前base64_encode(),取的时候base64_decode()

顺道提醒:

存用户昵称时要考虑表情图片这个因素,不一定===字符串

字段编码设置为utf8mb4之后,并没有什么用,读取显示的时候都是一堆问号;

相关讨论:微信小程序无法发送的emoji表情在做一个聊天小程序,发言的时候需要发送输入法中的emoji表情,但是在后端接收的时候收到的确实空字符串。不知道大家遇到过这样的问题吗? 需要从网上找一个js把emoji转换成指定文字的库然后从显示端再转换回来

这样的话服务端需要做处理吗?另外有什么好的js库可以提供吗? 这样的话服务端可以不用处理了,因为编码和反编码都在前端进行了,库github找找,我也没用过,也是提供一个思路,不过我觉得一定是有这样的库的

相关讨论: 我想请问一下各位在开发小程序的时候有遇到过获取nickName昵称时遇到有emoji表情时,存到数据库emoji表情就变成了“???”这样的情况吗? 可以这个编码,后台识别编码找表情

有个办法可以解决,把数据格式blob类型储存

我用个简单方式解决你问题吧,
1、String 转 Blob: String content = "Hello World!";  Blob blob = Hibernate.createBlob(content.getBytes());  2、Blob 转 String: Blob blob;  try{ String content = new String(blob.getBytes((long)1, (int)blob.length()));  } catch(SQLException e) { e.printStackTrace();  }

但存进服务器mysql就不行是的,因为你数据库的varchar不支持这个字符,你这个字符有可能是一种三字节的数据你可以选择把那些不规则的字符给过滤,但是这样会缺斤少两,不建议 我现在就是用过滤的,看上去就不全了,所以想看有什么方法能把它存起来,php+mysql那个emoji我通过php的json_encode,  ,就变成那样了,不知道怎么把他搞出来;如果我不存进数据库,就是先用json_encode然后马上用json_decode,返回微信显示是正常的;但是存到数据库之后拿出来json_decode也是有问题,就转不回去了先用urlencode下,取出的时候用urldecode

这个可以,我刚才试了,base64_encode这个函数其实也是可以,这两个其实会不会有什么兼容问题? 不会存在兼容问题,php高版本也支持

转载于:https://my.oschina.net/u/521776/blog/881103

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WSGI直观形象的了解一下

1. 浏览器请求动态页面过程 2. WSGI 怎么在你刚建立的Web服务器上运行一个Django应用和Flask应用&#xff0c;如何不做任何改变而适应不同的web架构呢&#xff1f; 在以前&#xff0c;选择 Python web 架构会受制于可用的web服务器&#xff0c;反之亦然。如果架构和服务器可以…

安装Hbase(分布式)遇到一些问题及解决方法

问题一&#xff1a;安装完成后在Hbase shell 命令行执行list命令时&#xff0c;爆出如下错误&#xff1a; hbase(main):001:0> list TABLE …

PyCharm光标变粗的解决办法

pycharm中光标变粗&#xff0c;如下&#xff1a; 此时变成了改写模式&#xff0c;只需要按下键盘的insert键即可 转载于:https://www.cnblogs.com/uglyliu/p/6159839.html

SparkRDD常用算子实践(附运行效果图)

目录1、简单算子说明2、复杂算子说明 目录 SparkRDD算子分为两类&#xff1a;Transformation与Action. Transformation&#xff1a;即延迟加载数据&#xff0c;Transformation会记录元数据信息&#xff0c;当计算任务触发Action时&#xff0c;才会真正开始计算。 Action&am…

Kali-linux使用Nessus

Nessus号称是世界上最流行的漏洞扫描程序&#xff0c;全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务&#xff0c;并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件&#xff0c;Nessus可同时在本机或远端上遥控&#xff0c;进行系统的漏洞分析扫描…

HDFS读写数据的原理

目录1 概述2 HDFS写数据流程3 HDFS读数据流程 目录 最近由于要准备面试&#xff0c;就把之前学过的东西好好整理下&#xff0c;权当是复习。 下面说下HDFS读写数据的原理。 1 概述 HDFS集群分为两大角色&#xff1a;NameNode、DataNode NameNode负责管理整个文件系统的元数…

理解列存储索引

版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 优点和使用场景 SQL Server 内存中列存储索引通过使用基于列的数据存储和基于列的查询处理来存储和管理数据。 列存储索引适合于主要执行大容量加载和只读查询的数据仓库工作负荷…

大数据开发初学者学习路线

目录前言导读&#xff1a;第一章&#xff1a;初识Hadoop第二章&#xff1a;更高效的WordCount第三章&#xff1a;把别处的数据搞到Hadoop上第四章&#xff1a;把Hadoop上的数据搞到别处去第五章&#xff1a;快一点吧&#xff0c;我的SQL第六章&#xff1a;一夫多妻制第七章&…

安卓屏幕适配问题

屏幕适配是根据屏幕密度&#xff0c;dpi为单位的&#xff0c;而不是分辨率。 手机会根据不同手机的密度&#xff0c;自己去不同资源目录下去找对应的资源 比如:   每个图片目录下的图片资源都是一样的&#xff0c;只是大小不一样   比如drawable-sw800dp-mdpi目录&#xff…

MapReduce原理全剖析

MapReduce剖析图 如上图所示是MR的运行详细过程 首先mapTask读文件是通过InputFormat&#xff08;内部是调RecordReader()–&#xff1e;read()&#xff09;来一次读一行&#xff0c;返回K,V值。&#xff08;默认是TextInputFormat&#xff0c;还可以输入其他的类型如:音视频&…

利用selenium webdriver点击alert提示框

在进行元素定位时常常遇到这样的alert框&#xff1a; 那么该如何定位并点击确定或取消按钮呢&#xff1f;stackoverflow上找到了这个问题的答案。 OK&#xff0c; Show you the code&#xff1a; 1 driver.findElement(By.id("updateButton")).click(); 2 //pop up w…

Django的核心思想ORM

元类实现ORM 1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想&#xff0c;“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;简称ORM。 一个句话理解就是&#xff1a;创建一个实例对象&#xff0c;用创建它的类名当做数据表名&#x…

Secondary Namenode的Check point机制以及Namenode、Datanode工作机制说明

目录前言&#xff1a;1、NameNode的工作机制2、DataNode的工作机制3、Secondary Namenode的Check point机制 目录 前言&#xff1a; 在说明checkpoint机制之前&#xff0c;先要了解下namenode、datanode的一些功能和职责。 1、NameNode的工作机制 问题场景&#xff1a; 1…

抓包软件:Charles

修正&#xff1a;手机不必一定连接电脑分享的热点&#xff0c;只需要手机和电脑在同一个局域网下就可以了&#xff0c;手机代理IP设置为电脑的IP。 之前写过一篇通过Wireshark进行抓包&#xff0c;分析网络连接的文章《通过WireShark抓取iOS联网数据实例分析》&#xff1a;htt…

Hive的相关介绍

目录前言&#xff1a;1、Hive简介2、Hive架构3、Hive与Hadoop的关系4、Hive与传统数据库对比5、Hive的数据存储总结&#xff1a; 目录 前言&#xff1a; 为什么使用Hive 直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难…

Java第五次作业--面向对象高级特性(抽象类和接口)

一、学习要点 认真看书并查阅相关资料&#xff0c;掌握以下内容&#xff1a; 掌握抽象类的设计掌握接口的设计理解简单工厂设计模式理解抽象类和接口的区别掌握包装类的应用掌握对象的比较方法和比较器的使用学习使用日期操作类学习匿名内部类的使用二、作业要求 发布一篇随笔&…

gulp教程之gulp-minify-css【gulp-clean-css】

原文&#xff1a;http://www.ydcss.com/archives/41 简介&#xff1a; 使用gulp-minify-css压缩css文件&#xff0c;减小文件大小&#xff0c;并给引用url添加版本号避免缓存。重要&#xff1a;gulp-minify-css已经被废弃&#xff0c;请使用gulp-clean-css&#xff0c;用法一致…

win7 IE11卸载后无法上网

今天某同事需要访问一个银行网站&#xff0c;必须使用IE8,我在win7中降级IE11,直接卸载了IE11和其语言包&#xff0c;发现IE8再也打不开网页了&#xff0c;每次打开都提示保存html网页。测试Google Chrome上网完全没有问题。IE8的internet选项等任何工具菜单点击均无反应&#…

关于django的模板

模板 问题 如何向请求者返回一个漂亮的页面呢&#xff1f; 肯定需要用到html、css&#xff0c;如果想要更炫的效果还要加入js&#xff0c;问题来了&#xff0c;这么一堆字段串全都写到视图中&#xff0c;作为HttpResponse()的参数吗&#xff1f;这样定义就太麻烦了吧&#x…

Hbase简介及常用命令相关知识总结

文章目录目录前言&#xff1a;1.Hbase简介1.1、什么是Hbase1.2、与传统数据库的对比1.3、Hbase集群中的角色2、Hbase数据模型3、Hbase命令总结&#xff1a;目录 前言&#xff1a; 对于Hbase来说&#xff0c;由于其是基于列的数据库&#xff0c;所以比传统的数据库快许多&…