Javascript ';源代码字符集';Vs';执行字符集';

Javascript ';源代码字符集';Vs';执行字符集';,javascript,eclipse,encoding,interpreter,ecmascript-5,Javascript,Eclipse,Encoding,Interpreter,Ecmascript 5,在javascript世界中 我了解到Javascript源代码字符集通常是UTF-8(但并不总是如此) 我了解到Javascript(执行)字符集是UTF-16 我如何解释这两个术语 注意:答案可以不依赖于语言,通过使用另一种语言,如java来给出。大多数源代码都是用utf-8编写的,或者应该是。由于源代码大部分是英语,使用ASCII兼容字符,并且utf-8在该字符范围内效率最高,因此有很大的优势。无论如何,它已经成为事实上的标准 JavaScript是在世界上其他国家使用utf-8之前开发的

在javascript世界中

我了解到Javascript源代码字符集通常是
UTF-8
(但并不总是如此)

我了解到Javascript(执行)字符集是
UTF-16

我如何解释这两个术语


注意:答案可以不依赖于语言,通过使用另一种语言,如
java

来给出。大多数源代码都是用utf-8编写的,或者应该是。由于源代码大部分是英语,使用ASCII兼容字符,并且utf-8在该字符范围内效率最高,因此有很大的优势。无论如何,它已经成为事实上的标准

JavaScript是在世界上其他国家使用utf-8之前开发的,因此它遵循Java的做法,对所有字符串使用utf-16,这在当时是非常超前的想法。这意味着所有字符串,无论是在源代码中编码,还是以其他方式获得,都将在utf-16中(重新)编码

在大多数情况下,这并不重要。源代码用于人,执行字符集用于机器。然而,事实上有两个小问题:

  • 如果您的字符串主要是ASCII范围(它们可能是英文的,甚至是其他使用空格的语言),JavaScript字符串可能会浪费大量空间
  • 与utf-8一样,utf-16也是可变宽度的,尽管大多数语言中的大多数字符都在正常的2字节之内;但是,如果某些字符扩展到4字节,JavaScript可能会错误计算字符串的长度
除了哪种编码更适合一种特定的人类语言的问题外,一种编码比另一种编码没有其他优势。如果JavaScript是最近开发的,它可能会对字符串使用utf-8编码