當Java源代碼中包含中文字符時,我們在用javac編譯時會出現“錯誤:編碼GBK的不可映射字符”。
由於JDK是國際版的,我們在用javac編譯時,編譯程序首先會獲得我們操作系統默認采用的編碼格式(GBK),然后JDK就把Java源文件從GBK編碼格式轉換為Java內部默認的Unicode格式放入內存中,然后javac把轉換后的Unicode格式的文件編譯成class類文件,此時,class文件是Unicode編碼的,它暫存在內存中,緊接着,JDK將此以Unicode格式編碼的class文件保存到操作系統中形成我們見到的class文件。當我們不加設置就編譯時,相當於使用了參數:javac -encoding GBK Test.java,就會出現不兼容的情況。
使用-encoding參數指明編碼方式:javac -encoding UTF-8 Test.java,就可以了。