記錄--微信小程式,uniapp,H5端發送,顯示emoji表情

来源:https://www.cnblogs.com/smileZAZ/archive/2022/09/01/16646725.html
-Advertisement-
Play Games

這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 小伙伴們,在開發中有沒有遇到過發佈帖子或者實時聊天需要發送到一些emoji表情的。 但是每當我們直接將emoji表情提交到後臺的介面又會報錯,因為字元串的格式不一致導致數據無法添加致資料庫。那麼作為前端的我們就要將我們要提交的數據,通過如 ...


這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

小伙伴們,在開發中有沒有遇到過發佈帖子或者實時聊天需要發送到一些emoji表情的。

 

但是每當我們直接將emoji表情提交到後臺的介面又會報錯,因為字元串的格式不一致導致數據無法添加致資料庫。
那麼作為前端的我們就要將我們要提交的數據,通過如下方法正則獲取所有的emoji表情,將其轉成 base64 。

// 將emoji表情其轉成 base64
utf16toEntities:function(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;
},

這樣我們就可以成功的將emoji表情提交到後臺並加入資料庫中了
那麼怎麼顯示的時候是一串字元串呢?
那是因為你這裡沒有在轉一下字元串類型導致現在顯示出來的不是emoji表情,而是一串字元串
接著我們就要在顯示前使用如下方法將該欄位解碼

// 解碼emoji表情
uncodeUtf16:function(str){
	var reg = /\&#.*?;/g;
	var result = str.replace(reg, function (char) {
		var H, L, code;
		if (char.length == 9) {
			code = parseInt(char.match(/[0-9]+/g));
			H = Math.floor((code - 0x10000) / 0x400) + 0xD800;
			L = (code - 0x10000) % 0x400 + 0xDC00;
			return unescape("%u" + H.toString(16) + "%u" + L.toString(16));
		} else {
			return char;
		}
	});
	return result;
},

本文轉載於:

https://blog.csdn.net/XujiRe/article/details/123186801

如果對您有所幫助,歡迎您點個關註,我會定時更新技術文檔,大家一起討論學習,一起進步。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 動畫一直是 iOS 開發中很重要的一部分。設計良好,效果炫酷的動畫往往能對用戶體驗的提升起到很大的作用,在這裡將自己學習 iOS 動畫的體會記錄下來,希望能對別人有所幫助。 iOS 的動畫框架,即 CoreAnimation,本身十分龐大和複雜,這裡暫時分兩個部分進行介紹,分別是 UIVi ...
  • == 和 的區別 使用雙等號進行相等判斷時,如果兩邊的類型不一致,則會進行強制類型轉化後再進行比較; 使用三等號進行相等判斷時,如果兩邊的類型不一致時,不會做強制類型準換,直接返回 false; ==的判斷流程 首先判斷兩者類型是否相同,相同的話就比較兩者的大小;類型不相同的話,就會進行類型轉換。 ...
  • 年少不知Vue的好,錯把layui當成寶 不用太在意這句話,只是我的感慨 1.安裝與配置: 在HBuilderX創建Uniapp項目,可以不用啟動uniCloud,Vue的版本隨意選擇即可,常用vue2.x。 根據官方文檔的提示,安裝uview。 點擊紅框中的按鈕打開終端。 執行如下的命令: npm ...
  • 好家伙,本篇介紹敵機 好了,按照慣例我們來理一下思路: 我們有一個敵機類,第一步當然是實例一個敵機對象, 然後我們把這個敵機放入我們的敵機群(敵機數組) 然後是熟悉的移動和繪製 那我們回顧一下子彈的生成邏輯 變數: 子彈 bullet 彈夾(用來裝子彈的東西)bulletList[] 方法:裝填子彈 ...
  • 題目來源於前端面試寶典——選擇題欄 習題 class Counter { // 二、count 屬性被包含在類 Counter 的構造函數與 increment 方法。 constructor() { this.count = 0 } increment() { this.count++ } } / ...
  • 代理模式 1 定義 為其他對象提供一種代理以控制對這個對象的訪問 在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 2 應用舉例 2.1 緩存代理 現在我們有一個可以查詢城市經緯度的函數: const getLatLng = (addres ...
  • 1 含義 頁面導航就是指頁面之間的一個跳轉 1.1 導航的實現方式 Web網頁端 微信小程式 1.2 聲明式導航 1.2.1 導航到tabBar頁面 使用<navigator>組件跳轉到指定的tabBar頁面 url:以/開頭,標識要跳轉的頁面地址 open-type:必須為switchTab,表示 ...
  • 作為一名H5開發人員可以使用hbuilder或apicloud。但是,到打包和發佈時,被申請ios證書和上架ipa文件給了困難。由於官方提供的方法,申請證書需要使用Mac電腦然後使用Mac電腦中的密鑰鏈訪問,去申請證書csr文件。然後再去蘋果開發者中心申請。 但是,Mac或未使用的Mac朋友都被 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...