1. 程式人生 > >設定Java JDK的預設編碼為UTF-8

設定Java JDK的預設編碼為UTF-8

首先,在網上找了一段程式來檢視自己當前系統的預設編碼:

import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;

class Test {
	public static void main(String[] args) {
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("file.encoding=" + System.getProperty("file.encoding"));
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("Default Charset in Use=" + getDefaultCharSet());
    }

    private static String getDefaultCharSet() {
        OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
        String enc = writer.getEncoding();
        return enc;
    }

}
java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import java.nio.charset.Charset; class Test { public static void main(String[] args) { System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("file.encoding=" + System.getProperty("file.encoding")); System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("Default Charset in Use=" + getDefaultCharSet()); } private static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writer.getEncoding(); return enc; } }

結果顯示為:

如圖,由於我的系統是中文語言的,得到的是GBK編碼,實際上可以在執行程式時給它指定編碼,用-Dfile.encoding=UTF-8引數即可,但在某些時候,執行Java程式不是由我們人為控制的,例如我在使用BalckBerry WebWorks SDK時用bbwp時無法在它呼叫Java時給它指定encoding引數,於是杯具就產生了,出現了一大堆帶問號的錯誤,顯然是編碼的問題,這種情況下,就只能設全域性變數來改變encoding了。

Java官方文件有提到可以在系統變數中設定JAVA_TOOL_OPTIONS來指定執行Java程式時附帶的一些引數,即每次執行Java程式時都會將這些引數附加進去,參考原文:

那麼,現在就可以在系統環境變數中增加一個變數,變數名為: JAVA_TOOL_OPTIONS, 變數值為:-Dfile.encoding=UTF-8,儲存,重新開啟命令提示符,現在,再執行一次剛剛的程式,得到結果:

現在顯示為UTF-8編碼了,注意紅色方框部分,每次執行時都會先出現這些引數,在這裡我還加了兩個引數,改變了預設的語言和時區,因為我發現改了編碼為UTF-8後,出現的Java提示如java -help之類的都會變成亂碼,所以把它改成英文的提示了。