1. 程式人生 > >java在命令列中編譯程式碼出現 錯誤: 編碼GBK的不可對映字元

java在命令列中編譯程式碼出現 錯誤: 編碼GBK的不可對映字元

在編譯的時候,如果我們沒有用-encoding引數指定我們的JAVA源程式的編碼格式,則javac.exe會獲得我們作業系統預設採用的編碼格式。

JDK根據作業系統的file.encoding引數(它儲存的就是作業系統預設的編碼格式,如WIN2k,它的值為GBK),把源程式從預設編碼格式轉化為JDK內部預設的UNICODE格式放入記憶體中。然後把轉換後的unicode格式的檔案進行編譯成.class類檔案,此時.class檔案是UNICODE編碼的,它暫放在記憶體中,最後JDK將此以UNICODE編碼的編譯後的class檔案儲存到我們的作業系統中形成我們見到的.class檔案。

對我們來說,我們最終獲得的.class檔案是內容以UNICODE編碼格式儲存的類檔案,它內部包含我們源程式中的中文字串,只不過此時它己經由file.encoding格式轉化為UNICODE格式了。當我們不加設定就編譯時,相當於使用了引數:javac -encoding gbk XX.java,當然就會出現不相容的情況。

解決辦法:使用-encoding引數指明編碼方式:javac -encoding UTF-8 XX.java