V-Emoji-Picker
V-Emoji-Picker copied to clipboard
emoji 存入数据库的前端处理方法(The front-end processing method for storing emoji in database)
- 前端处理emoji表情的编码解码
- Front-end processing of encoding and decoding of emoji expressions
//把utf16的emoji表情字符进行转码成八进制的字符
//Transcode emoji characters of utf16 into octal characters
export function utf16toEntities(str) {
var patt = /[\ud800-\udbff][\udc00-\udfff]/g; // 检测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; // 转换算法
return "&#" + code + ";";
} else {
return char;
}
});
}
//将编码后的八进制的emoji表情重新解码成十六进制的表情字符
//Re-decode the encoded octal emoji expressions into hexadecimal expression characters
export 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);
});
}
var a = utf16toEntities("🤓2333😎");
console.log("a: ", a);
var b = entitiesToUtf16(a)
console.log("b: ",b)
var c = entitiesToUtf16("🤓2333😎");
console.log("c: ", c);
I didn't understand about the problem, please be clear about the problem and in English