作为测试,我创建了一个名为 Hello.java 的文件,内容如下:
public class Hello{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
我使用 UTF-8 编码保存了此文件。
无论如何,编译和运行问题没问题。此文件长 103字节。
然后我用 UTF-16 BE 编码保存了该文件。这次文件 206字节长,因为UTF-16(通常)需要更多空间,所以这里不足为奇。
尝试从我的终端编译文件,我收到了所有这些错误:
Hello.java:4: error: illegal character: '\u0000'
}
^
javac仅适用于UTF-8编码的源文件吗?这是标准吗?
javac -version
javac 1.8.0_45
另外,我只知道Java,但可以说你正在运行Python代码或任何解释性编程语言。 (对不起,如果我误以为Python被解释,如果不是......)编码是否有问题?如果没有,它会对性能有任何影响吗?
好的,所以单词“true”是一个保留的关键字(对于给定的编程语言......)但它保留了什么编码? ASCII - 仅限UTF-8?
如何将“true”存储在硬盘驱动器或内存中取决于保存文件的编码,编程语言是否必须始终使用特定的源文件编码?
答案 0 :(得分:1)
关于javac,您可以使用-encoding
参数设置编码。内部Java处理UTF-16中的字符串,因此编译器会将所有内容转换为该字符串。
编译器必须知道编码,以便它可以处理源代码。它与编译器,解释器或语言无关。就像人们不能随意使用语言文本并假设它是德语一样。
关键字不以任何特定编码保留。它们是关键字。无论使用何种编码,您都无法使用两种方式编写单个单词。这些话是一样的。
编程语言并不关心编码。 编译器/解释器可以。