'Source code charset' 比 'Execution charset'

'Source code charset' Vs 'Execution charset'

在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在这个字符范围内效率最高,有很大的优势。不管怎样,它已经成为了事实上的标准。

Java脚本是在世界其他地方使用 utf-8 之前开发的,因此它遵循 Java 对所有字符串使用 utf-16 的做法,这是非常前瞻性的当时。这意味着所有字符串,无论是在源代码中编码,还是通过其他方式获得,都将被(重新)编码为 utf-16。

在大多数情况下它并不重要。源代码是给人类的,执行字符集是给机器的。然而,事实确实有两个小问题:

  • Java脚本字符串可能会浪费很多 space 如果您的字符串主要是 ASCII 范围(它们将是英语,甚至是使用 spaces 的其他语言).
  • 与 utf-8 一样,utf-16 也是可变宽度的,尽管大多数语言中的大多数字符都在正常的 2 个字节内;但是 Java如果某些字符扩展到 4 个字节,脚本可能会错误计算字符串的长度。

除了哪种编码更适合特定人类语言的问题,没有其他优势。如果 Java脚本是最近开发的,它可能会使用 utf-8 编码字符串。