Mac Intellij 控制檯亂碼解決

http://www.kafeitu.me/tools/2013/03/26/intellij-deal-chinese-disorderly-code.html

 

IntelliJ IDEA中文亂碼解決辦法

1. 預熱

剛剛接觸IntelliJ IDEA幾天,在易用性方面的確比Eclipse好很多,比較智能,各種插件、工具都已經集成,和Mac OS X類似——開箱即用,並且在試用了之後在開源中國三折(後悔2折的時候沒有下手)購買了授權。

但是還是老大難問題——中文亂碼,讓我不得不花費了一些時間去折騰它,這一點就不如Eclipse了,沒有遇到過亂碼問題。

亂碼問題表現在使用Web Server(Tomcat、Jetty)時輸出日誌或者直接System.out.println("中文字符")時會出現,如果僅僅執行類的main函數沒有問題。

2. 環境

我針對亂碼問題在不同的環境下進行了測試:

2.1. 系統語言:英文

我一直的習慣把系統語言設置爲英文(強迫性記憶),這是第一次遇到亂碼問題,分析了程序執行參數如下:

ps -ef | grep java

執行後得到如下的結果,省略了classpath:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -d64 -Djava.awt.headless=true -Xmx512m -Dfile.encoding=MacRoman -classpath … org.jetbrains.idea.maven.server.RemoteMavenServer

分析參數和編碼有關的只有一個:

-Dfile.encoding=MacRoman 

2.2. 系統語言:中文

先說明一下如果系統語言設置爲中文是沒有亂碼問題的,所以網上大量的重複文章的辦法是把"File Encoding"設置爲GBK或者GB2312,但是很多系統的編碼不可能因爲一個IDE而更改編碼,所以這種辦法直接無視!!!

切換到中文語言後分析執行參數,和英文語言下不同的是:

-Dfile.encoding=GB2312

3. 解決辦法

相信看完了分析已經知道如何解決問題了,因爲MacRoman編碼不包含中文所以會出現亂碼,而設置系統語言爲中文的時候系統默認設置爲GB2312編碼,所以編碼問題自然就沒有了。

3.1. 步驟一

和項目編碼統一,更改IntelliJ IDEA啓動時的編碼參數即可,打開下面的配置文件:

/Applications/IntelliJ IDEA 12.app/Contents/Info.plist
在IntelliJ IDEA 12.app文件右鍵選擇“Show Contents”即可看到Contents目錄。

找到key等於VMOptions位置,這裏設置的虛擬機的參數,在後面追加下面的參數保存文件。

-Dfile.encoding=UTF-8

PS:從12.1版本開始默認添加了這個參數

3.2. 步驟二

不要以爲問題解決了,實際上只完成了一半,因爲是運行Web Server時出現的亂碼,所以Web Server的編碼要和IDEA保持一致:

IDEA中設置Web Server的虛擬機編碼

這樣IDE的編碼(控制檯編碼受IDE影響)和Web Server輸出的編碼一致問題解決。

啓動Web Server之後再分析JVM的參數可以看到 -Dfile.encoding=UTF-8

發佈了42 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章