https://www.cnblogs.com/lijianda/p/10734266.html
一般我們在IDE中都會(huì)將項(xiàng)目相關(guān)的編碼內(nèi)容全部設(shè)成UTF-8锯蛀,因此這里不討論項(xiàng)目的編碼是否有問題(若不確定,可以反編譯class文件在文本編輯器中查看其中中文)。
需要修改的分為兩部分:windows的控制臺(tái)部分和Tomcat自身日志控制部分
一娃属、windows的控制臺(tái)部分
首先你要確定你想修改所有的cmd窗口還是只修改Tomcat產(chǎn)生的cmd窗口。
若修改所有cmd窗口的請看操作2灾挨,
若只修改tomcat的請看操作1榕吼。
(修改所有的cmd會(huì)使得在cmd內(nèi)操作程序的時(shí)候某些輸出內(nèi)容為gbk編碼的文字亂碼,只修改tomcat的就不會(huì)有這個(gè)問題黑界。)
**操作1 只修改tomcat的的窗口為UTF8編碼
亂碼原因:由于使用startup.bat啟動(dòng)Tomcat時(shí)管嬉,它會(huì)讀取catalina.bat的代碼并start一個(gè)新窗口運(yùn)行, 但tomcat打開的cmd默認(rèn)編碼不是utf-8皂林,從而導(dǎo)致亂碼。
解決方法:推薦【 使用運(yùn)行.bat文件方式宠蚂,比較簡單】
方法一:(手動(dòng)修改注冊表)
1)控制臺(tái)部分:打開注冊表式撼,按路徑HKEY_CURRENT_USER→Console→Tomcat(一般解壓版的Tomcat在console目錄下不會(huì)有Tomcat這一項(xiàng),因此需要手動(dòng)創(chuàng)建)求厕,找到CodePage項(xiàng)著隆,沒有則創(chuàng)建(注意創(chuàng)建的時(shí)候要DWORD32位),設(shè)置值為十進(jìn)制的65001呀癣。
方法二:(寫個(gè)bat腳本去修改注冊表)或用bat腳本來修改注冊表美浦,
新建一個(gè)txt文本,直接復(fù)制下面代碼貼進(jìn)去项栏,保存為 “任意名.bat”文件浦辨,后雙擊運(yùn)行。
set rr="HKCU\Console\Tomcat"
reg add %rr% /v "CodePage" /t REG_DWORD /d 0x0000fde9 /f>nul
進(jìn)行完上述操作后沼沈,運(yùn)行startup.bat流酬,在新彈出cmd窗口標(biāo)題欄上右鍵,點(diǎn)擊屬性列另,
若當(dāng)前代碼頁顯示為65001則修改成功芽腾。
操作2、在運(yùn)行中通過輸入regedit進(jìn)入注冊表页衙,找到
HKEY_CURRENT_USER\Console%SystemRoot%_system32_cmd.exe摊滔,
新建一個(gè) DWORD(32位值),命名為CodePage,值設(shè)為65001店乐,已有CodePage的話艰躺,修改它,改為十進(jìn)制眨八,65001腺兴。
若正確修改后,cmd依然為GBK廉侧,可以試試輸入命令chcp 65001页响。
修改后,所有的cmd窗口編碼格式都是UTF-8了伏穆。
二拘泞、Tomcat自身日志部分
上述修改成功后,由于控制臺(tái)編碼已改為UTF-8枕扫,而Tomcat自身日志輸出編碼未修改陪腌,因此部分強(qiáng)迫癥患者可能需要修改Tomcat自身日志編碼。
所以一般情況分為兩種,一種是使用startup.bat另一種是使用startup.sh诗鸭,這里先解決startup.bat染簇。
startup.bat------------------------
需要修改的是Tomcat的bin文件夾下的catalina.bat文件,修改位置如下圖所示
[圖片上傳失敗...(image-cc00a3-1571278446500)]
在JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%后添加
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8復(fù)制代碼
注意放在引號內(nèi)强岸,file.encodeing是修改文件內(nèi)編碼格式锻弓,sun.jnu.encoding是修改文件名編碼格式。
修改完畢后彈出cmd內(nèi)所有內(nèi)容編碼都為UTF-8蝌箍,強(qiáng)迫癥患者滿意了青灼。
startup.sh-----------------------------
.sh的窗口內(nèi)編碼可以直接在窗體標(biāo)題欄上右鍵,點(diǎn)擊options妓盲,在彈出框內(nèi)修改為UTF-8杂拨。
同理對于catalina.sh的彈出框,我們需要修改的內(nèi)容如下圖所示:
[圖片上傳失敗...(image-96decb-1571278446500)]
在-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager后添加
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
復(fù)制代碼
其實(shí)還有一個(gè)簡單的辦法悯衬,
就是將start.bat中的call "%EXECUTABLE%" start %CMD_LINE_ARGS%的start換成run弹沽,這樣就不用修改注冊表里內(nèi)容了。
因?yàn)椴粫?huì)彈出額外的catalina.bat窗口了筋粗。
start.sh同理策橘。