如何将unicode字符转换为相应的表情符号



我正在用我的数据做类似于这个网站的事情。我有下面格式的Unicode,并且将UTF16转换为UTF字符串的代码可以工作。

function decodeFBEmoji (fbString) {
// Convert String to Array of hex codes
const codeArray = (
fbString  // starts as 'u00f0u009fu0098u00a2'
.split('')
.map(char => (
char.charCodeAt(0)  // convert 'u00f0' to 0xf0
)
);  // result is [0xf0, 0x9f, 0x98, 0xa2]
// Convert plain JavaScript array to Uint8Array
const byteArray = Uint8Array.from(codeArray);
// Decode byte array as a UTF-8 string
return new TextDecoder('utf-8').decode(byteArray);  // '  '

我正在尝试从文本字符串中提取Unicode,然后将其替换为解码后的Unicode,以显示为正确的表情符号。我尝试使用regex来提取Unicode字符串,但是,它转换为随机垃圾字符,regex结果为null。如何在不更改其余文本的情况下用表情符号替换给定代码?

function replaceEmoji(text){
let str = "lorem ipsum lorem ipsum u00e2u009du00a4u00efu00b8u008f lorem ipsum"; 
let res = str.match(/[\]w+/g); 
console.log(str);
console.log(res); //Result is null
}

控制台输出上述代码

编辑:Regex Pattern I测试

您试图解码一些UTF8,但却混淆了JS字符串转义和字节。

当您键入uXXXX时,您为unicode代码点键入了一个转义符(就像n是换行符的转义符一样),因此这是真的,例如:"u0041" == "A"

这就是正则表达式无法匹配任何内容的原因,字符串中实际上没有反斜杠。现在还不清楚你的UTF8是以什么形式出现的,但如果它像你写的那样,那就是一系列UTF8字节,需要这样解码:

const utf8 = new Uint8Array(
Array.prototype.map.call(
"lorem ipsum lorem ipsum u00e2u009du00a4u00efu00b8u008f lorem ipsum", 
c => c.charCodeAt(0)
)
);
console.log(new TextDecoder('utf8').decode(utf8));

相关内容

  • 没有找到相关文章

最新更新