Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将表情符号javascript unicode代码转换为utf-8_Javascript_Utf 8_Character Encoding_Emoji - Fatal编程技术网

将表情符号javascript unicode代码转换为utf-8

将表情符号javascript unicode代码转换为utf-8,javascript,utf-8,character-encoding,emoji,Javascript,Utf 8,Character Encoding,Emoji,在用户输入狗脸表情-U+1F436之后,我得到了一个Javascript字符串 字符串似乎是2个unicode字符-“\ud83d\udc36” 我想把它转换成utf-8。我调用javascript encodeURIComponent(string),它返回一个似乎不是有效的utf-8的6字节字符串 我相信有效的utf-8从0xF0开始有4个字节长 那么如何将“\ud83d\udc36”转换为有效的utf-8字符串呢 谢谢。试试这个: function encode_utf8(s) { r

在用户输入狗脸表情-U+1F436之后,我得到了一个Javascript字符串

字符串似乎是2个unicode字符-“\ud83d\udc36”

我想把它转换成utf-8。我调用javascript encodeURIComponent(string),它返回一个似乎不是有效的utf-8的6字节字符串

我相信有效的utf-8从0xF0开始有4个字节长

那么如何将“\ud83d\udc36”转换为有效的utf-8字符串呢

谢谢。

试试这个:

function encode_utf8(s) {
  return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

“字符串似乎是2个unicode字符”,具体地说,它是两个UTF-16代码单元,构成一个代理项对。(一个JavaScript字符串实际上是一系列允许无效代理项对的UTF-16代码单元。)我在unescape上没有定义。或者你能告诉我escape是做什么的,我可以复制它。例如。变量e=encodeURIComponent('\u0227');console.log(e)“%C8%A7”var u=unescape(e);控制台日志(u);“ȧ”此解决方案将utf-16释放为两个%udddd序列。理想情况下,我希望将其转换为正确的utf-8,即4个字节0xF0、0x9F、0x98、0x81。但是如果我不能,我可以使用这个解决方案作为备份-我感谢你的回答。事实上,我发现encodeURIComponent()确实正确地将utf16转换为utf8(4字节序列)。问题出在服务器上。感谢您再次确认。