歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java 中關於System property 之 file.encoding

通過代碼

System.getProperty("file.encoding")

可以獲得file.encoding的值

問題1:file.encoding的值是什麼呢?  這個一開始我認為是操作系統的編碼

但我錯了,它的值為保存每個程序的main入口的那個java文件的保存編碼(點擊文件-->屬性-->text file encoding(other的值),這是使用eclipse 編譯器)

通過以下的代碼即可證明:

/**
 * Test.java源代碼文件
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
        //Test2.printEncoding();
    }
}

1、文件保存的編碼為:GB2312 時

編譯執行之後,得到的結果為:

GB2312 

2、文件保存的編碼為:GBK 時

編譯執行之後,得到的結果為:

GBK

3、文件保存的編碼為:UTF-8時

編譯執行之後,得到的結果為:

UTF-8

從上面的三個結果可以看出,file.encoding的值並不是操作系統os的默認編碼

而是main入口函數所在的類的保存編碼.

但是這時想到了另一個問題,

問題2:是不是每個java文件都有自己的file.encoding呢?

於是我寫了另一個類做試驗,添加了類文件Test2.java

/**
 * Test2.java源代碼文件
 */
public class Test2 {
    public static void printEncoding(){
        System.out.println(System.getProperty("file.encoding"));
    }
}

並將源文件Test.java的代碼修改為:

/**
 * Test.java源代碼文件
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
        Test2.printEncoding();//添加了這個命令
    }
}

這時我將Test.java的保存編碼設置為:utf-8

將Test2.java的保存編碼設置為:GBK

根據問題2我最原始的假設那麼

編譯運行這兩個文件之後得到的結果應該為:

utf-8

GBK

但事實是運行後的結果為:

utf-8

utf-8

於是得出了結論是:

在一個運行的應用程序中

file.encoding的值只有一個,並且值為入口函數的保存編碼的值

至於file.encoding在代碼中的代碼有哪些應用,以後更深入時再討論.

Copyright © Linux教程網 All Rights Reserved