作爲測試我創建了一個稱爲Hello.java文件和內容如下:編碼和編程語言之間的協議/關係是什麼?
public class Hello{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
我保存的這個文件有UTF-8編碼。
無論如何,編譯和運行問題是沒有問題的。該文件是103字節長。
然後我保存的文件與UTF-16編碼。這一次的文件是206字節長,因爲以及UTF-16(通常)需要更多的空間,所以這裏沒有什麼驚喜。
試圖編譯從我的終端的文件,我得到了所有這些錯誤:
Hello.java:4: error: illegal character: '\u0000'
}
^
所以確實只能用UTF-8編碼的源文件javac的工作?這就像一個標準?
javac -version
javac 1.8.0_45
此外,我只知道Java,但可以說你正在運行Python代碼或任何解釋性編程語言。 (對不起,如果我誤解了Python是否被解釋,如果它不是..)編碼會是一個問題嗎?如果不是,它會對性能產生什麼影響?
好了,所以字「真」是保留關鍵字(對於給定的編程語言..),但在什麼編碼它保留? ASCII - 僅限UTF-8?
如何「真」被保存在硬盤或內存取決於文件保存在編碼,因此必須在編程語言的期望總是與源文件的特定編碼工作?
.class文件是否總是utf-8? –
@KorayTugay補充說明。 Java在內部使用UTF-16 –
如果解釋器需要使用不同的編碼處理文件,該怎麼辦?像一個文件是utf8,但依賴項是utf16? –