Javascript 如何将utf-16表情符号代理对解码为uf8-8,并在html中正确显示它们?
我有一个字符串,其中包含xml。它具有以下子字符串Javascript 如何将utf-16表情符号代理对解码为uf8-8,并在html中正确显示它们?,javascript,xml,string,utf-8,utf-16,Javascript,Xml,String,Utf 8,Utf 16,我有一个字符串,其中包含xml。它具有以下子字符串 <Subject>&#55357;&#56898;&#55357;&#56838;&#55357;&#56846;&#55357;&#56838;&#55357;&#56843;&#55357;&#56838;&#55357;&
<Subject>&#55357;&#56898;&#55357;&#56838;&#55357;&#56846;&#55357;&#56838;&#55357;&#56843;&#55357;&#56838;&#55357;&#56843;&#55357;&#56832;&#55357;&#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);
控制台日志(结果)代码>可能的帮助: