Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/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 如何将utf-16表情符号代理对解码为uf8-8,并在html中正确显示它们?_Javascript_Xml_String_Utf 8_Utf 16 - Fatal编程技术网

Javascript 如何将utf-16表情符号代理对解码为uf8-8,并在html中正确显示它们?

Javascript 如何将utf-16表情符号代理对解码为uf8-8,并在html中正确显示它们?,javascript,xml,string,utf-8,utf-16,Javascript,Xml,String,Utf 8,Utf 16,我有一个字符串,其中包含xml。它具有以下子字符串 <Subject>&amp;#55357;&amp;#56898;&amp;#55357;&amp;#56838;&amp;#55357;&amp;#56846;&amp;#55357;&amp;#56838;&amp;#55357;&amp;#56843;&amp;#55357;&amp;#56838;&amp;#55357;&

我有一个字符串,其中包含xml。它具有以下子字符串

<Subject>&amp;#55357;&amp;#56898;&amp;#55357;&amp;#56838;&amp;#55357;&amp;#56846;&amp;#55357;&amp;#56838;&amp;#55357;&amp;#56843;&amp;#55357;&amp;#56838;&amp;#55357;&amp;#56843;&amp;#55357;&amp;#56832;&amp;#55357;&amp;#56846;</subject>    
&#55357;&#56898;&#55357;&#56838;&#55357;&#56846;&#55357;&#56838;&#55357;&#56843;&#55357;&#56838;&#55357;&#56843;&#55357;&#56832;&#55357;&#56846;    
我正在从服务器中提取xml,需要向用户显示它。我注意到符号已被转义,并且存在utf-16代理项对。如何确保表情符号/表情符号在浏览器中正确显示

目前,我只得到以下字符:�������������� 而不是实际的表情符号


我正在寻找一种简单的方法来解决这个问题,如果可能的话,不需要任何外部库或任何第三方代码,只需要简单的旧javascript、html或css。

您可以使用
string.fromCharCode
将UTF-16代码单元(包括代理)转换为javascript字符串。下面的代码片段应该给您一个想法

var str='&#55357;&#56898;ABC&#55357;&#56838;&#55357;&#56846;&#55357;&#56838;&#55357;&#56843;&#55357;&#56838;&#55357;&#56843;&#55357;&#56832;&#55357;&#56846;';
//匹配代理项或字符的正则表达式。
var re=/&#(\d+)|([^&])/g;
var匹配;
var charCodes=[];
//查找连续的匹配项
while(match=re.exec(str)){
如果(匹配[1]!=null){
//代理
charcode.push(匹配[1]);
}
否则{
//未转义字符(假设代码点低于0x10000),
charCodes.push(匹配[2].charCodeAt(0));
}
}
//从UTF-16代码单元创建字符串。
var result=String.fromCharCode.apply(null,charCodes);
控制台日志(结果)可能的帮助: