在 JavaScript 世界中,
I learnt that Javascript source code charset is usually
UTF-8
(but not always).I learnt that Javascript (execution) charset is
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 编码字符串。
关于javascript - “源代码字符集”与 'Execution charset',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827037/