这是html文件:
<!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()显示为表情符号。为什么?
发布于 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序列。
发布于 2016-07-21 16:56:25
请认为这是T.J.克劳德回答的补充-我没有50名代表,所以不能作为评论添加:(
你在html中的转义是错误的,在Javascript中,反斜杠(**)是用来转义的,但在HTML语言中,转义是通过使用&符号(&)和分号(;**)作为前缀来实现的。
您可以使用HTML数字字符引用:
<div>decimal: 😀</div>
<div>hex: 😀</div>
并且here is是emoji HTML代码的一个很好的参考。
免责声明:我与本网站没有任何联系
发布于 2016-07-21 16:39:45
最明显的原因是\ud83d\ude00在超文本标记语言测试中不是转义序列。
使用HTML entities代替它应该可以工作:
\ud83d\ude00
��
😀
https://stackoverflow.com/questions/38498643
复制相似问题