首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么document.write('\ud83d\ude00')可以输出UTF-8字符集的HTML表情?

为什么document.write('\ud83d\ude00')可以输出UTF-8字符集的HTML表情?
EN

Stack Overflow用户
提问于 2016-07-21 16:14:39
回答 3查看 1.8K关注 0票数 0

这是html文件:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>emoji</title>
</head>
<body>
    \ud83d\ude00
    <script>
        var string = '\ud83d\ude00';
        document.write(string);
        console.log(string);
    </script>
</body>
</html>

body标记中的unicode '\ud83d\ude00‘不能显示为表情符号,而是字符串。但是,即使文档字符集是UTF-8,“ud83dude00”也可以通过document.write()和console.log()显示为表情符号。为什么?

EN

回答 3

Stack Overflow用户

发布于 2016-07-21 16:19:01

元标头中的UTF-8只说明了如何读取响应的文本,它不会将实际的DOM文档放入某种使文档本身成为UTF-8的模式中。

至于你的字符串工作的原因:一个JavaScript字符串是a series of UTF-16 code units。因此,'\ud83d\ude00'在JavaScript级别定义了表情符号。然后使用document.write将该字符串写出到文档中。此时,您正在处理的是活动文档,而不是您所说的UTF-8格式的源文本。

如果你想在文档中直接包含表情符号,而不是通过document.write,只需将它粘贴到文档中;如果你将文件保存为UTF-8 (你需要这样做,因为你已经告诉浏览器这是你正在使用的编码),你的编辑器将为它输出适当的UTF-8序列。

票数 1
EN

Stack Overflow用户

发布于 2016-07-21 16:56:25

请认为这是T.J.克劳德回答的补充-我没有50名代表,所以不能作为评论添加:(

你在html中的转义是错误的,在Javascript中,反斜杠(**)是用来转义的,但在HTML语言中,转义是通过使用&符号(&)和分号(;**)作为前缀来实现的。

您可以使用HTML数字字符引用:

代码语言:javascript
复制
<div>decimal:  &#128512;</div>
<div>hex:      &#x1f600;</div>

并且here is是emoji HTML代码的一个很好的参考。

免责声明:我与本网站没有任何联系

票数 1
EN

Stack Overflow用户

发布于 2016-07-21 16:39:45

最明显的原因是\ud83d\ude00在超文本标记语言测试中不是转义序列。

使用HTML entities代替它应该可以工作:

代码语言:javascript
复制
\ud83d\ude00
&#xd83d;&#xde00;
&#x1f600;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38498643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档