1. 預熱
剛剛接觸IntelliJ IDEA幾天,在易用性方面的確比Eclipse好很多,比較智能,各種插件、工具都已經集成,和Mac OS X類似——開箱即用。
但是還是老大難問題——中文亂碼,讓我不得不花費了一些時間去折騰它,這一點就不如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。
windows下改intellij安裝目錄下bin\idea.exe.vmoptions文件
如果以上中文還是亂碼的問題:需要將原先的中文字符重新輸一遍。
轉自:http://www.kafeitu.me/tools/2013/03/26/intellij-deal-chinese-disorderly-code.html
如果是編輯器亂碼的話
一、進入設置頁。File-->Settings (快捷鍵:Ctrl+Alt+S)
二、進入IDE Settings,在File Encoding 中 的 Default encoding 改為 GB2312。
-Dfile.encoding=UTF-8
idea 要設置