1. 程式人生 > >Eclipse、IDEA環境下設定jvm預設編碼

Eclipse、IDEA環境下設定jvm預設編碼

轉載: https://blog.csdn.net/u014424628/article/details/49429393

這這有個小程式,大家可以在自己機器上跑一下:

import java.nio.charset.Charset;

public class Encoding {
    public static void main(String[] args) {

        System.out.println(System.getProperty("file.encoding"));
        System.out.println(Charset.defaultCharset().name());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

列印結果是什麼? 
GBK 
估計大多數人的機器列印的結果是GBK?因為我們很多人系統預設編碼就是GBK. 
我們檢視jdk文件可以看到: 
//java.nio.charset.Charset 
static Charset defaultCharset() 
Returns the default charset of this Java virtual machine. 
//java.lang.System 
static String getProperty(String key) 
Gets the system property indicated by the specified key.

上面兩個說白了上面兩個方法獲得的是系統預設的字符集編碼,所以我們一般獲得的是GBK,因為我們大部分用的是中文版的window系統。。。。。

但是我們能不能改呢?肯定能! 
eclipse上 
右鍵工程–>properties–>Resource–>textfileEncoding 
如圖所示
看到這裡的GBK了吧,也許你早就改過了,所以前面執行結果不是GBK。 
試試改成utf-8,再執行程式。是不是發現執行結果變成utf-8了? 
為了統一編碼,這裡我們通常設定成utf-8 
IDEA上 
File–>Settings–>File Encodings–>Project Encoding 
這裡寫圖片描述


我們改成iso8859-1試試 
輸出是不是變成了iso8859-1。為了統一編碼我們還是改回utf-8吧。【如果你之前沒有改過idea的編碼,這個位置還有其它幾個位置編碼可能就是system default即GBK】

這樣就完了? 
no,no,no!! 
我們試著建立一個web專案,web容器採用tomcat 
這裡寫圖片描述
好大的兩個GBK…….【宣告:IDEA上工程,檔案的字符集編碼已經設定成了UTF-8,所以不要懷疑是這個原因。】 
那麼,到底是什麼原因呢?我們之前明明就是這樣改的,而且成功了哎。

我只想說:可能web專案比較特殊吧,畢竟它執行的時候藉助了web容器,比如這裡我們使用的是tomcat容器。 
那麼我們該如何讓其迴歸utf-8呢? 
方法當然有,如下: 
來到tomcat配置介面:新增虛擬機器啟動引數:-Dfile.encoding=UTF-8 
這裡寫圖片描述
我們再來執行一遍: 
這裡寫圖片描述
utf-8出來了,有木有。 
納尼,控制檯出現了鳥文? 
我們繼續對IDEA做點修改。 
開啟idea安裝目錄下的bin資料夾,找到idea.exe.vmoptions檔案並開啟 

新增一條配置資訊:-Dfile.encoding=UTF-8 

注:如果是idea如果是64位:修改:

我在修改了idea.exe.vmoptions檔案引數後,重啟idea,執行tomcat控制檯同樣亂碼,之後我又同樣修改了idea64.exe.vmoptions,重啟執行,perfect

這裡寫圖片描述
ok,重啟idea,再次執行web專案 
這裡寫圖片描述
世界頓時又美好了。