Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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/3/html/89.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和HTML打印表情符号_Javascript_Html_Unicode_Emoji - Fatal编程技术网

使用JavaScript和HTML打印表情符号

使用JavaScript和HTML打印表情符号,javascript,html,unicode,emoji,Javascript,Html,Unicode,Emoji,为什么这样做有效: <p id="emoji">&#x1f604;</p> JS术语中的“char”实际上是UTF-16代码单元,而不是完整的Unicode字符。(这种可悲的状况源于远古时代,当时没有任何区别*)要使用基本多语言平面之外的字符,您必须以UTF-16编码的形式书写: 在ECMAScript 6中,我们将获得一些接口,这些接口允许我们像处理完整的Unicode代码点一样处理字符串,尽管它们不完整,只是字符串类型的一个表面,仍然存储为代码单元序列。那么

为什么这样做有效:

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

JS术语中的“char”实际上是UTF-16代码单元,而不是完整的Unicode字符。(这种可悲的状况源于远古时代,当时没有任何区别*)要使用基本多语言平面之外的字符,您必须以UTF-16编码的形式书写:

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

String.fromCodePoint(0x1F604)
请参阅以获取一些polyfill代码,以便在当今的浏览器中使用此功能


(*:当我访问一台时间机器时,我会让希特勒一个人呆着,回去发明UTF-8。UTF-16肯定从来没有发明过!)

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

elem=document.createElement('p')

。。。用工作HTML填充它

elem.innerHTML=“😄”

。。。最终得到它的价值

value=elem.innerHTML

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


希望我能帮忙。

欢迎来到UTF-16和代理配对的恐怖。
String.fromCharCode(0xD83D, 0xDE04)
String.fromCodePoint(0x1F604)