【发布时间】:2016-12-30 09:26:03
【问题描述】:
【问题讨论】:
-
为什么不呢?如果 JVM 需要 UTF-16 但编译后的文件不需要怎么办?有什么问题?
-
@AxelH 放松。他只是想知道为什么 JVM 需要 UTF-16 而不是 UTF-8。这是合法的!
-
@AhmadWabbi 我没有说他的问题很愚蠢......我只是提出了一些想法......
【问题讨论】:
为什么 .class 是 UTF-8
对于为西方读者编写的课程,通常主要是 ASCII,这是最紧凑的编码。
但运行时 .class 是 UTF-16 吗?
在运行时处理使用固定宽度编码 (Why Java char uses UTF-16?) 的字符串会更快,因此选择了 UCS-2。从 UCS-2 到 UTF-16 的变化使得这成为另一种可变宽度编码,这使得这变得复杂。
如该问题的 cmets 所述,JEP 254 允许将运行时表示更改为更节省空间的内容(例如 Latin-1)。
【讨论】:
-encodingencoding 设置源文件编码名称,如 EUC-JP 和 UTF-8。如果不指定-encoding,则平台默认 使用转换器。
Java 虚拟机的每个实例都有一个默认字符集, 这可能是也可能不是标准字符集之一。默认 字符集在虚拟机启动期间确定,通常 取决于底层使用的语言环境和字符集 操作系统。
【讨论】:
.class-文件的编码,而不是.java 文件。
class文件中使用的编码,它总是UTF-8,Java进程在运行时使用UTF-16。