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專案
世界頓時又美好了。