unicode 字符未出现在 html

chars by unicode not appear on html

我试图用 javascript 获取“”表情符号的 Unicode,但当我尝试将其添加为 HTML 时却没有出现,很多表情符号都没有出现

var x="A".charCodeAt(0);
document.write(x); // gaves 65

A给了A

var y="".charCodeAt(0);
document.write(y); // gaves 55358

�没给

这是什么原因?

这个表情符号:有一个十进制 (dec) 参考 129300。如果你想让它显示在你的 HTML 试试这个:

<p>&#129300;</p>

有关 dec 参考的完整列表,请访问 w3schools' website

JavaScript中的字符(或代码点)由代码单元组成。有时,一个代码点由一个代码单元组成。例如,“a”的代码点由一个代码单元(97 或 0x61)组成。然而,其他代码点由两个代码单元(称为代理项对)组成,它们一起工作以形成单个字符。例如,您在问题中分享的 Thinking Face emoji () 由两个代码单元组成,当它们配对在一起时形成一个代码点以形成 thinking face emoji。你可以通过取 .length 来看到它:

console.log("".length); // 2 (as made up of two code points)
console.log("".charCodeAt(0)); // 55358 or 0xD83E
console.log("".charCodeAt(1)); // 56596 or 0xDD14

当您使用 .charCodeAt() 时,您正在访问字符串元素的 代码单元 。如上所示,"" 包含两个代码单元,0xD83E (55358) 和 0xDD14 (56596)。 .charCodeAt(0) 返回的第一个代码单元只有在与其他代码单元一起使用时才有意义,因此它不能独立工作,这就是为什么你在结果中得到替换字符符号 (�) 的原因:

console.log(""[0], ""[1]); // � �

而不是使用通过.chartCodeAt()获得的单个代码单元,您可以显示整个代码点(即:字符),可以使用.codePointAt():

获得

console.log("".codePointAt(0)); // 129300 or 0x1F914

然后,您可以将此号码用作 HTML 实体:

<p>&#129300;</p>