微信小程序中使用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.pswp.cn/news/456742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ignorethis

執行Hive語句運行MapReduce程序時突然出現這樣的異常&#xff1a; Total MapReduce jobs 1 Launching Job 1 out of 1 Number of reduce tasks not specified. Estimated from input data size: 1 In order to change the average load for a reducer (in bytes):set hive.ex…

Oracle基礎語句

1、創建表create table IT_EMPLOYEES(ENPLOYEES_ID NUMBER(6) NOT NULL UNIQUE,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) NOT NULL,EMAIL VARCHAR2(25),PHONE_NUMBER VARCHAR2(20),JOB_ID VARCHAR2(10),SALARY NUMBER(8,2),MANAGER_ID NUMBER(6));2、--創建索引&#x…

Linux三劍客之grep 與 egrep

grep&#xff1a;Linux上文本處理三劍客1 grep&#xff1a;文本過濾(模式&#xff1a;pattern)工具; *&#xff08;grep, egrep, fgrep&#xff09; 2 sed&#xff1a;stream editor&#xff0c;文本編輯工具&#xff1b; 3 awk&#xff1a;Linux上的實現gawk&#xff0c;文本報…

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 …

安裝MySql卡在Start Service的問題

我的情況&#xff1a;之前在windows下安裝過5.6版本&#xff0c;卸載后&#xff0c;現在安裝5.7版本&#xff0c;然后卡在Start Service這里&#xff0c;log日志沒報任何錯誤&#xff0c;后來經過不斷的嘗試各種網上的辦法終于把問題解決了。 問題的原因就是當初卸載5.6版本時…

學習進度條11

第十三周 日期 星期一 星期二 星期三 星期四 星期五 星期六 所花時間&#xff08;包括上課&#xff09; 19:10-22:20 (編程河北省科技信息通用調查系統) 8:00-10:00 (上課) 18:30-21:00 (Oracle實驗) 14:00-16:30 (編程河北省科技信息通用調查系統) 18:20-22:30 (編…

Python面向切面編程是什么

簡而言之就是裝飾器 https://blog.csdn.net/qq_41856814/article/details/90146293

hibernate實現多變聯合查詢

Hibernate主要支持兩種查詢方式&#xff1a;HQL查詢和Criteria查詢。前者應用較為廣發&#xff0c;后者也只是調用封裝好的接口。 現在有一個問題&#xff0c;就是實現多表連接查詢&#xff0c;且查詢結果集不與任何一個實體類對應&#xff0c;怎么解決呢&#xff1f; 舉個例子…

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…

six庫是什么

Utilities for writing code that runs on Python 2 and 3”“” 它是一個專門用來兼容 Python 2 和 Python 3 的庫。它解決了諸如 urllib 的部分方法不兼容&#xff0c; str 和 bytes 類型不兼容等“知名”問題。

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 內存中列存儲索引通過使用基于列的數據存儲和基于列的查詢處理來存儲和管理數據。 列存儲索引適合于主要執行大容量加載和只讀查詢的數據倉庫工作負荷…

Django項目部署到阿里云服務器上無法發送郵件STMP

部署好項目之后發送郵件無法發送&#xff0c;多方查閱之后&#xff0c;解決問題。 阿里云服務器禁用了25端口&#xff0c;導致無法發送郵件。 25端口申請開放的難度很大&#xff0c;直接放棄。 解決&#xff1a; 在 django項目的 settings.py文件中x修改port端口 。

美國誠實簽經驗——IMG全球醫療險,TODO

那么&#xff0c;誠實簽最關鍵的4個要點 是什么呢&#xff1f; 第一&#xff0c;證明你有一定的經濟實力。 可能需要房產、存款等證明&#xff0c;也需要銀行信用卡或借記卡半年流水證明&#xff08;讓人信服的每月進帳和消費能力&#xff09;。 這些是為了證明&#xff0c;你可…

大數據開發初學者學習路線

目錄前言導讀&#xff1a;第一章&#xff1a;初識Hadoop第二章&#xff1a;更高效的WordCount第三章&#xff1a;把別處的數據搞到Hadoop上第四章&#xff1a;把Hadoop上的數據搞到別處去第五章&#xff1a;快一點吧&#xff0c;我的SQL第六章&#xff1a;一夫多妻制第七章&…

Python的虛擬環境配置(pyenv+virtualenv)

一、為什么需要配置虛擬環境 Python 2和Python 3之間存在著較大的差異&#xff0c;并且&#xff0c;由于各種原因導致了Python 2和Python 3的長期共存。在實際工作過程中&#xff0c;我們可能會同時用到Python 2和Python 3&#xff0c;因此&#xff0c;也需要經常在Python 2和P…

安卓屏幕適配問題

屏幕適配是根據屏幕密度&#xff0c;dpi為單位的&#xff0c;而不是分辨率。 手機會根據不同手機的密度&#xff0c;自己去不同資源目錄下去找對應的資源 比如:   每個圖片目錄下的圖片資源都是一樣的&#xff0c;只是大小不一樣   比如drawable-sw800dp-mdpi目錄&#xff…