javascript - “源代码字符集”与 'Execution charset'

标签 javascript eclipse encoding interpreter ecmascript-5

在 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/

相关文章:

c - Eclipse:为 c 项目添加外部库不起作用

git - 在 Windows 7 上使用 unicode 的 msysgit 配置文件文件夹

javascript - 如何在 Mirth Connect 2.2.1 中将目录作为源?

javascript - Google Analytics 没有实时跟踪?

javascript - 使用 jQuery 获取特定行的值

java - 为什么带有 String 编码参数的 Scanner 构造函数不会抛出 UnsupportedEncodingException?

ruby - 为什么在 Ruby 中将 7 位 ASCII 字符串文字编码为 UTF-8

javascript - 使用 Id 获取数据与使用 Name 获取数据之间的区别

java - EJB3 的异常(exception)情况

java - 在 Spring Tool Suite 中使用 Ant 时出现运行 javac.exe 编译器错误消息