摘要:表情符的編碼解碼我之前在做微信小程序的時(shí)候遇到了一個(gè)問(wèn)題,一些讓用戶輸入的地方,還有用戶的微信昵稱都有可能輸入鍵盤自帶的表情符,在服務(wù)端接收的時(shí)候會(huì)有異常,在前端進(jìn)行加密后的簽名和后端接收到數(shù)據(jù)后再進(jìn)行后的簽名不一樣。
表情符的編碼解碼
我之前在做微信小程序的時(shí)候遇到了一個(gè)問(wèn)題,一些讓用戶輸入的地方,還有用戶的微信昵稱都有可能輸入鍵盤自帶的emoji表情符,在服務(wù)端接收的時(shí)候會(huì)有異常,在前端進(jìn)行MD5加密后的簽名和后端接收到數(shù)據(jù)后再進(jìn)行MD5后的簽名不一樣。
網(wǎng)上有給出一些解決方法,比如加載表情符圖片,修改數(shù)據(jù)庫(kù)的字符編碼等,這些方法都不太好,也沒有解決問(wèn)題,后面找了比較久才找到合適的解決的方法:表情符編碼是十六進(jìn)制的,需要把表情符轉(zhuǎn)碼成八進(jìn)制的。
下面是我用到的代碼:
//把utf16的emoji表情字符進(jìn)行轉(zhuǎn)碼成八進(jìn)制的字符 function utf16toEntities(str) { var patt = /[ud800-udbff][udc00-udfff]/g; // 檢測(cè)utf16字符正則 return 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; // 轉(zhuǎn)換算法 return "" + code + ";"; } else { return char; } }); } //將編碼后的八進(jìn)制的emoji表情重新解碼成十六進(jìn)制的表情字符 function entitiesToUtf16(str) { return str.replace(/(d+);/g, function (match, dec) { let H = Math.floor((dec - 0x10000) / 0x400) + 0xD800; let L = Math.floor(dec - 0x10000) % 0x400 + 0xDC00; return String.fromCharCode(H, L); }); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/100681.html
摘要:輸入框首尾清除空格在中監(jiān)聽鍵盤事件移動(dòng)端底部被彈出的鍵盤遮擋輸入框是通過(guò)一直放在頁(yè)面底部,當(dāng)點(diǎn)擊進(jìn)行輸入的時(shí)候,就會(huì)出現(xiàn)如下圖片情況有的機(jī)型會(huì)遮擋一些。 前言 input是我們接受來(lái)自用戶的數(shù)據(jù)常用標(biāo)簽,在前端開發(fā)中,相信每個(gè)人都會(huì)用到這個(gè)標(biāo)簽,所以在開發(fā)過(guò)程中也時(shí)候也會(huì)遇到一些問(wèn)題,本文的內(nèi)容是我在跟input相愛相殺過(guò)程中產(chǎn)生的,在此記錄分享一下。如果喜歡的話可以點(diǎn)波贊/關(guān)注,支持...
摘要:輸入框首尾清除空格在中監(jiān)聽鍵盤事件移動(dòng)端底部被彈出的鍵盤遮擋輸入框是通過(guò)一直放在頁(yè)面底部,當(dāng)點(diǎn)擊進(jìn)行輸入的時(shí)候,就會(huì)出現(xiàn)如下圖片情況有的機(jī)型會(huì)遮擋一些。 前言 input是我們接受來(lái)自用戶的數(shù)據(jù)常用標(biāo)簽,在前端開發(fā)中,相信每個(gè)人都會(huì)用到這個(gè)標(biāo)簽,所以在開發(fā)過(guò)程中也時(shí)候也會(huì)遇到一些問(wèn)題,本文的內(nèi)容是我在跟input相愛相殺過(guò)程中產(chǎn)生的,在此記錄分享一下。如果喜歡的話可以點(diǎn)波贊/關(guān)注,支持...
摘要:輸入框首尾清除空格在中監(jiān)聽鍵盤事件移動(dòng)端底部被彈出的鍵盤遮擋輸入框是通過(guò)一直放在頁(yè)面底部,當(dāng)點(diǎn)擊進(jìn)行輸入的時(shí)候,就會(huì)出現(xiàn)如下圖片情況有的機(jī)型會(huì)遮擋一些。 前言 input是我們接受來(lái)自用戶的數(shù)據(jù)常用標(biāo)簽,在前端開發(fā)中,相信每個(gè)人都會(huì)用到這個(gè)標(biāo)簽,所以在開發(fā)過(guò)程中也時(shí)候也會(huì)遇到一些問(wèn)題,本文的內(nèi)容是我在跟input相愛相殺過(guò)程中產(chǎn)生的,在此記錄分享一下。如果喜歡的話可以點(diǎn)波贊/關(guān)注,支持...
摘要:因此導(dǎo)致亂碼的真正原因就是各平臺(tái)間對(duì)標(biāo)準(zhǔn)實(shí)現(xiàn)不一致包括實(shí)現(xiàn)的時(shí)間先后不同,以及所代表含義不同。日本幾家公司各自定義了一套標(biāo)準(zhǔn),用兩個(gè)字節(jié)表示符號(hào),日本電腦系統(tǒng)的一種編碼編碼是從到。在上找到了與標(biāo)準(zhǔn)的對(duì)應(yīng)關(guān)系。 歡迎關(guān)注個(gè)人網(wǎng)站:http://www.iamaddy.net/2016/07/emoji-unicode-parser/ 前言 這是一個(gè)由亂碼引發(fā)的故事。抱歉我暫時(shí)找不到更加慘...
閱讀 4060·2021-11-16 11:50
閱讀 998·2021-11-11 16:55
閱讀 3743·2021-10-26 09:51
閱讀 930·2021-09-22 15:03
閱讀 3564·2019-08-30 15:54
閱讀 3357·2019-08-30 15:54
閱讀 2548·2019-08-30 14:04
閱讀 979·2019-08-30 13:53