由《編譯.java文件時的編碼問題》可知,在編譯.java文件的時候,需要正確指定一個編碼方案,該編碼方案用於解碼.java文件的字節流。
那么在使用Intellij Idea編譯(假定使用javac編譯工具)項目下所有的.java文件時,該如何指定正確的編碼方案呢?
1)首先,我們需要知道當執行"Build"菜單下的"Make Project"命令,編譯整個項目下的.java文件的時候,Intellij Idea執行的具體命令。我們可以通過以下方式獲得,執行"Build"菜單下的"Generate Ant Build"命令,生成一個Ant Build File,然后通過這個Ant Build File,我們就可以得到Intellij Idea在編譯整個項目的時候執行的具體命令。[1]
2)借助於1)中的Ant Build File,可以發現Intellij Idea在編譯項目下的.java文件時,執行的具體命令是“帶有各種參數的javac命令”。其中有一個"-encoding"參數,該參數就是用來指定編譯.java文件時應該使用的編碼方案的,如圖1所示。Intellij Idea自身有一套機制,用來確定該參數的值,經過測試,該值有可能來自"Project Encoding"的配置,見圖2;有可能來自某個.java文件被Intellij Idea檢測到的使用的編碼方案,見鏈接;也有可能來自圖3中所示的編譯器參數配置等等。具體的機制需要查閱相關文檔。
圖1
圖2
圖3
3)由2)可得,Intellij Idea自身有一套確定"-encoding"參數值的機制,但是往往最后被確定的值不是我們想要的。而且"encoding"參數是非常重要的一個參數,為了更加准確地指定"-encoding"參數,我們可以在圖3所示的編譯器參數配置中明確配置"-encoding xxx"。
參考文獻:
[1]http://stackoverflow.com/questions/2966530/can-i-see-the-exact-commands-intellij-uses-to-build-a-java-project
---------------------
作者:AllInCode
來源:CSDN
原文:https://blog.csdn.net/dslztx/article/details/47010113/