今天做項目的時候遇到一個很頭疼的問題——無論在Java代碼中如何統一編碼為UTF8,在IDE中運行是完全沒問題的,但打包成Jar通過Bash和CMD運行,都會出現中文亂碼問題。起初是覺得Java編譯時編碼出現了問題,但經過幾小時的排查,終於找到中文亂碼問題的根源——cmd/bash默認的編碼是GBK。
亂碼共有兩處:一處是控制台打印日志亂碼,另一處是返回數據到前台,亂碼。
解決:
控制台日志亂碼:
打開cmd,輸入以下命令
chcp 65001
這樣就可以更改cmd的編碼為UTF-8了。
數據結果亂碼:
運行時,指定編碼,啟動命令改為:
java -Dfile.encoding=utf-8 -jar cpw-0.0.1-SNAPSHOT.jar