今天做項目的時候遇到一個很頭疼的問題——無論在Java代碼中如何統一編碼爲UTF8,在IDE中運行是完全沒問題的,但打包成Jar通過Bash和CMD運行,都會出現中文亂碼問題。起初是覺得Java編譯時編碼出現了問題,但經過幾小時的排查,終於找到中文亂碼問題的根源——cmd/bash默認的編碼是GBK。爲了防止日後再踩坑,本文記錄問題的解決方案。
一、設定cmd的編碼爲utf-8
打開cmd,輸入以下命令
chcp 65001
這樣既可以更改cmd的編碼爲UTF-8了。
以下是常用的cmd編碼
字符編碼 |
對應字符 |
GBK(默認) |
936 |
美國英語 |
437 |
utf-8 |
65001 |
二、規定執行java時的編碼方式
在cmd下,常見運行Jar包的命令如下
java -jar project.jar
但這樣可能會使得java運行時編碼不正確導致的報錯,這時候我們可以將運行Jar時,指定編碼參數
java -Dfile.encoding=utf-8 -jar project.jar
三、將以上命令打包成bat
每次啓動項目都要進行如上兩步的話,其實會非常麻煩,我們可以將以上兩部打包成bat批處理文件,具體步驟如下
3.1 在Jar的目錄下創建一個txt文件,通過記事本打開
3.2 將以上命令寫入txt文件中,保存
3.3 修改msgSystemStart.txt爲msgSystemStart.bat
3.4 運行bat文件
可以看到,項目正常啓動,並且不會出現亂碼問題;
通過以上步驟,基本上可以將中文亂碼問題解決。