我有一个字符串,其中包含 xml 。它具有以下 substring
<Subject>&#55357;&#56898;&#55357;&#56838;&#55357;&#56846;&#55357;&#56838;&#55357;&#56843;&#55357;&#56838;&#55357;&#56843;&#55357;&#56832;&#55357;&#56846;</subject>
我正在从服务器中提取 xml ,我需要将其显示给用户。我注意到“&”号已被转义,并且有utf-16代理对。如何确保表情符号/表情符号在浏览器中正确显示。
目前,我只得到以下字符:��������������而不是实际的表情符号。
我正在寻找一种简单的方法来解决此问题,而无需任何外部库或任何第三方代码(如果可能的话)只是普通的旧javascript,html或css。
答案 0 :(得分:0)
您可以使用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;';
// Regex matching either a surrogate or a character.
var re = /&#(\d+);|([^&])/g;
var match;
var charCodes = [];
// Find successive matches
while (match = re.exec(str)) {
if (match[1] != null) {
// Surrogate
charCodes.push(match[1]);
}
else {
// Unescaped character (assuming the code point is below 0x10000),
charCodes.push(match[2].charCodeAt(0));
}
}
// Create string from UTF-16 code units.
var result = String.fromCharCode.apply(null, charCodes);
console.log(result);