簡單來說就是指定JVM預設的編碼方式
java io中很多方法,如果你不指定具體的編碼方式,就會從這個屬性取得 file.encoding 但是後來(由于bug) 檢視了jdk的一些實作,發現有些方法不管你指定編碼與否都會從 file.encoding取編碼方式,就是說是jdk的bug 當時發現的是JDK 1.5的某個版本有這個問題
因為jdk預設字元編碼是作業系統的編碼,中文的系統自然就是gbk了
你的這段代碼就是使用的作業系統的預設編碼
new BufferedWriter(response.getWriter()); 因為沒有指定字元編碼,預設編碼為gbk
-Dfile.encoding就是用來改變jdk處理檔案等的預設字元編碼
如果你程式中使用
OutputStreamWriter(OutputStream out,String charsetName)這個去包裝,就可以指定編碼,而不是用預設的編碼