今天做項(xiàng)目的時(shí)候遇到一個很頭疼的問題——無論在Java代碼中如何統(tǒng)一編碼為UTF8,在IDE中運(yùn)行是完全沒問題的,但打包成Jar通過Bash和CMD運(yùn)行,都會出現(xiàn)中文亂碼問題。起初是覺得Java編譯時(shí)編碼出現(xiàn)了問題,但經(jīng)過幾小時(shí)的排查,終于找到中文亂碼問題的根源——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時(shí)的編碼方式
在cmd下,常見運(yùn)行Jar包的命令如下
java -jar project.jar
但這樣可能會使得java運(yùn)行時(shí)編碼不正確導(dǎo)致的報(bào)錯,這時(shí)候我們可以將運(yùn)行Jar時(shí),指定編碼參數(shù)
java -Dfile.encoding=utf-8 -jar project.jar
三、將以上命令打包成bat
每次啟動項(xiàng)目都要進(jìn)行如上兩步的話,其實(shí)會非常麻煩,我們可以將以上兩部打包成bat批處理文件,具體步驟如下
3.1 在Jar的目錄下創(chuàng)建一個txt文件,通過記事本打開

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

3.3 修改msgSystemStart.txt為msgSystemStart.bat

3.4 運(yùn)行bat文件

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