nEA*_*nam 2 java unicode javac character-encoding
来自 Java 规范 SE 7 版
\n\n\xc2\xa73.1 Unicode
\n\n\n\n\n程序是使用 Unicode 字符集编写的。
\n
\xc2\xa73.2词汇翻译
\n\n\n\n\n使用以下三个词汇翻译步骤将原始 Unicode 字符流翻译为\n 标记序列...
\n
我很困惑,因为我用本机字符编码(Windows-1252)编写源代码,并且规范提到(?)全部从原始 Unicode 字符流开始,然后词法翻译(包括 Unicode 转义转换)是执行。
\n\n他们提到 Unicode 转义可用于包含任何使用\仅 ASCII 字符的 Unicode 字符;如果执行了之前的转换,我认为它们引用的是 Unicode 字符集子集中的 ASCII 字符,这是有道理的。
\n\n之前是否有从用于写入源文件的编码到 Unicode 的转换?
\n\n一些相关信息,但我认为这更像是运行时的文本处理,而不是编译过程:
\n\n\n基本上,规范所说的是您只能在源文件中使用 Unicode 字符。它没有定义这些字符实际上如何编码为字节,这取决于您和您正在使用的平台。
基本上,编译器内部发生的事情是从磁盘读取源文件作为字节流,然后将这些字节转换为 Java 的 Unicode 字符的内部表示形式。它将源文件的原始字节转换为 Unicode 字符的方式基于-encoding传递给 的选项javac。如果未-encoding设置选项,它将使用您平台的默认编码。
现在还需要注意的是,编译器将源代码字节转换为字符后,它会执行另一个步骤将字符文字(例如\u00a5123)转换为适当的单个 Unicode 字符。这实际上是您在问题中引用的第 3.2 节中引用的三个步骤中的第一个。这样,就可以只使用纯 ASCII 字符来表示源中的任何 Unicode 字符。
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |