Unicode - 这里发生了什么?

时间:2018-01-16 08:46:29

标签: javascript unicode

此代码:

 console.log('');
 console.log('\uD83D\uDE00');

来自HTML脚本标记:

 😀
 

粘贴到浏览器控制台(同一浏览器):

 
 

这里发生了什么导致第一个console.log('');当它包含在脚本标记中时失败,但在浏览器控制台中运行时工作正常。显而易见的问题似乎是它没有转换为代理对,因为第二行按预期工作。

1 个答案:

答案 0 :(得分:5)

您的HTML文件未保存在HTTP标头或HTML元标记所宣传的相同编码中。该文件以错误的编码解释,导致错误的字符。这对于unicode转义序列来说并不重要,它是纯ASCII,对非ASCII字面值很重要。

具体猜测:文件保存为UTF-8,但标识为ISO-8859-1。