用JavaScript和HTML打印表情符号

Printing emojis with JavaScript and HTML

本文关键字:符号 打印 HTML JavaScript      更新时间:2023-09-26

为什么这样做:

<p id="emoji">&#x1f604;</p>

document.getElementById("emoji").innerHTML = String.fromCharCode(parseInt('1f604', 16));

JS术语中的'char'实际上是UTF-16代码单元,而不是完整的Unicode字符。(这种可悲的状况源于没有差别的古代。)要使用基本多语言平面之外的字符,必须以两个16位代码单元的代理对的utf -16编码形式编写:

String.fromCharCode(0xD83D, 0xDE04)

在ECMAScript 6中,我们将获得一些接口,这些接口允许我们处理字符串,就好像它们是完整的Unicode码点一样,尽管它们是不完整的,并且只是String类型的一个暂存,String类型仍然作为代码单元序列存储。然后我们可以这样做:

String.fromCodePoint(0x1F604)

参见这个问题的一些polyfill代码,让你在今天的浏览器中使用这个功能。

(*:当我有机会进入时间机器时,我要离开希特勒,回到以前发明UTF-8。

如果您不想在代码中包含String.fromCodePoint(),也可以使用hacky方法。它包括创建一个虚元素…

elem=document.createElement('p')

…用工作HTML填充…

elem.innerHTML = "&#x1f604"

…最后得到它的值

value = elem.innerHTML

简而言之,这是因为一旦设置了HTML容器的值,该值就会被转换为相应的字符。

希望我能帮上忙