問題描述:
1、在idea中輸出正常,無亂碼
2、打包可執行jar,在控制台中使用java命令運行,寫入數據庫存在中文亂碼。
3、執行jar時加入-Dfile.encoding=utf-8 即 java -Dfile.encoding=utf-8 -jar XXX.jar,數據庫寫入正常,控制台log日志中文亂碼,system.out.println輸出中文正常。
解決思路:
1、修改log4j配置文件,將控制台輸出標記為utf-8
結果:失敗!!!
2、看了一些解決方案,將charset改為gbk,放到winows中運行。中文不亂碼了!但是同一個項目的web部分放到linux中運行輸出又亂碼,這不是最終解決方案。
3、通過上面兩部,基本確定了問題所在:windows命令行窗口默認是gbk編碼,可食用chcp查看。
所以追其原因,是windows命令行編碼與log4j2不一致。為了讓log4j保持utf-8,應對放在linux中的項目輸出中文正常,可調整windows命令行編碼。及在運行jar之前,先運行命令:chcp 65001,將命令行編碼修改為utf-8,再執行jar文件,可以將整個命令寫到批處理bat中,方便執行。
via:https://blog.csdn.net/lhrm0213/article/details/104664734