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

3.2 將以上命令寫入txt文件中,保存

3.3 修改msgSystemStart.txt為msgSystemStart.bat

3.4 運行bat文件

可以看到,項目正常啟動,并且不會出現(xiàn)亂碼問題;
通過以上步驟,基本上可以將中文亂碼問題解決。
|