使用命令行javac命令編譯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
轉自:http://www.mamicode.com/info-detail-456244.html