javac編譯亂碼
1. response.setContentType("text/html;charset=gbk"); 為什麼還是中文亂碼
這是因為:由於JDK是國際版的,在編譯的時候,如果我們沒有用-encoding參數指定我們的java源程序的編碼格式,則javac.exe首先獲得我們操作系統默認採用的編碼格式,也即在編譯java程序時,若我們不指定源程序文件的編碼格式,JDK首先獲得操作系統的file.encoding參數(它保存的就是操作系統默認的編碼格式,如WIN2k,它的值為GBK),然後JDK就把我們的java源程序從file.encoding編碼格式轉化為JAVA內部默認的UNICODE格式放入內存中。然後,javac把轉換後的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,這下沒警告了,運行也正確了在JCreator 4中設置:菜單:Configure --> Options --> JDK Tools --> Compiler,選中<Default>,然後選Edit,Parameters裡面,最前面添加:-encoding UTF-8。
Parameters原來的
默認值為:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]
修改後為:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]
2. JAVA 亂碼 根本原因是什麼
右鍵點擊亂碼文件,選preferenses,看看resource里的編碼是不是正確,虧攔搜如果不是utf-8就改成utf-8,衡或如果是utf-8的話你改成別的編碼試試看看,然後把正常狀態下的內容復制出來,在把文件改成utf-8後銷歷把文件復制進去