Java獲取默認字符集-知識梳理

1.直接上代碼

import java.nio.charset.Charset;


/**
 * 獲取當前虛擬機的默認字符集 Charset.defaultCharset() 或 System.getProperty("file.encoding")
 * Charset.defaultCharset()底層代碼也是通過調用 System.getProperty("file.encoding") 實現
 * <p>
 * 1.只有通過傳遞 jvm 參數的方式來默認編碼(jvm啓動時生效,不可更改) == 後續變更無效 <br/>
 * 2.此係統屬性正確叫法:來自於java.nio.charset.Charset.defaultCharset()註釋 <br/>
 * 英文:the default charset of this Java virtual machine <br/>
 * 中文:此 Java 虛擬機的默認 charset <br/>
 * 3.jvm參數指定方式爲:java -Dfile.encoding=xxx
 * 4.如果是在eclipse中運行main方法,設置參見文中圖2。
 * </p>
 * 
 * @author yuxiangtong
 *
 */
public class Test {

    public static void main(String[] args) {

        String encoding = System.getProperty("file.encoding");

        System.out.println("file.encoding :" + encoding); // UTF-8
        System.out.println(
                "此 Java 虛擬機的默認 charset :" + Charset.defaultCharset().name()); // UTF-8

        /* 嘗試重置 file.encoding */
        encoding = System.setProperty("file.encoding", "GBK");

        /* 重置失敗,依然是默認的UTF-8 */
        System.out.println(encoding); // UTF-8

        /* 嘗試獲取測試屬性 */
        System.out.println(System.getProperty("testkey")); // null
        System.setProperty("testkey", "張三");
        System.out.println(System.getProperty("testkey")); // 張三

        System.out.println("張三".getBytes().length); // 6
    }
}


2. 圖2如下

wKioL1hHcfKTbHMFAADDoTjAXb0750.png


3.DOS下命令行提示信息:

C:\Users>java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

C:\Users>java
用法: java [-options] class [args...]
           (執行類)
   或  java [-options] -jar jarfile [args...]
           (執行 jar 文件)
其中選項包括:
    -d32          使用 32 位數據模型 (如果可用)
    -d64          使用 64 位數據模型 (如果可用)
    -server       選擇 "server" VM
                  默認 VM 是 server.

    -cp <目錄和 zip/jar 文件的類搜索路徑>
    -classpath <目錄和 zip/jar 文件的類搜索路徑>
                  用 ; 分隔的目錄, JAR 檔案
                  和 ZIP 檔案列表, 用於搜索類文件。
    -D<名稱>=<值>
                  設置系統屬性
    -verbose:[class|gc|jni]
                  啓用詳細輸出
    -version      輸出產品版本並退出
    -version:<值>
                  警告: 此功能已過時, 將在
                  未來發行版中刪除。
                  需要指定的版本才能運行
    -showversion  輸出產品版本並繼續
    -jre-restrict-search | -no-jre-restrict-search
                  警告: 此功能已過時, 將在
                  未來發行版中刪除。
                  在版本搜索中包括/排除用戶專用 JRE
    -? -help      輸出此幫助消息
    -X            輸出非標準選項的幫助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度啓用斷言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的斷言
    -esa | -enablesystemassertions
                  啓用系統斷言
    -dsa | -disablesystemassertions
                  禁用系統斷言
    -agentlib:<libname>[=<選項>]
                  加載本機代理庫 <libname>, 例如 -agentlib:hprof
                  另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<選項>]
                  按完整路徑名加載本機代理庫
    -javaagent:<jarpath>[=<選項>]
                  加載 Java 編程語言代理, 請參閱 java.lang.instrument
    -splash:<imagepath>
                  使用指定的圖像顯示啓動屏幕
有關詳細信息, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章