通常咱們在IDE中都會將項目相關的編碼內容所有設成UTF-8,所以這裏不討論項目的編碼是否有問題(若不肯定,能夠反編譯class文件在文本編輯器中查看其中中文)。java
須要修改的分爲兩部分:windows的控制檯部分和Tomcat自身日誌控制部分apache
首先你要肯定你想修改全部的cmd窗口仍是隻修改Tomcat產生的cmd窗口。windows
若想修改全部cmd窗口的請看操做2,只修改tomcat的請看操做1。tomcat
(修改全部的cmd會使得在cmd內操做程序的時候某些輸出內容爲gbk編碼的文字亂碼,只修改tomcat的就不會有這個問題。)bash
操做一、因爲使用startup.bat啓動Tomcat時,它會讀取catalina.bat的代碼並start一個新窗口運行, 但tomcat打開的cmd默認編碼不是utf-8,從而致使亂碼。編輯器
解決方法:ui
1)控制檯部分:打開註冊表,按路徑HKEY_CURRENT_USER→Console→Tomcat(通常解壓版的Tomcat在console目錄下不會有Tomcat這一項,所以須要手動建立),找到CodePage項,沒有則建立(注意建立的時候要DWORD32位),設置值爲十進制的65001。編碼
或直接複製下面代碼,保存爲任意名.bat文件,直接運行。spa
set rr="HKCU\Console\Tomcat"
reg add %rr% /v "CodePage" /t REG_DWORD /d 0x0000fde9 /f>nul複製代碼
這裏推薦使用運行.bat文件方式,比較簡單。日誌
進行完上述操做後,運行startup.bat,在新彈出cmd窗口標題欄上右鍵,點擊屬性,顯示以下
若當前代碼頁顯示爲65001則修改爲功。
操做2、在運行中經過輸入regedit進入註冊表,找到
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,
新建一個 DWORD(32位值),命名爲CodePage,值設爲65001,已有CodePage的話,修改它,改成十進制,65001。
若正確修改後,cmd依然爲GBK,能夠試試輸入命令chcp 65001。
修改後,全部的cmd窗口編碼格式都是UTF-8了。
上述修改爲功後,因爲控制檯編碼已改成UTF-8,而Tomcat自身日誌輸出編碼未修改,所以部分強迫症患者可能須要修改Tomcat自身日誌編碼。
因此通常狀況分爲兩種,一種是使用startup.bat另外一種是使用startup.sh,這裏先解決startup.bat。
startup.bat------------------------
須要修改的是Tomcat的bin文件夾下的catalina.bat文件,修改位置以下圖所示
在JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%後添加
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8複製代碼
注意放在引號內,file.encodeing是修改文件內編碼格式,sun.jnu.encoding是修改文件名編碼格式。
修改完畢後彈出cmd內全部內容編碼都爲UTF-8,強迫症患者滿意了。
startup.sh-----------------------------
.sh的窗口內編碼能夠直接在窗體標題欄上右鍵,點擊options,在彈出框內修改成UTF-8。
同理對於catalina.sh的彈出框,咱們須要修改的內容以下圖所示:
在-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager後添加
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
複製代碼
------------------------------------------
其實還有一個簡單的辦法,
就是將start.bat中的call "%EXECUTABLE%" start %CMD_LINE_ARGS%的start換成run,這樣就不用修改註冊表裏內容了。
由於不會彈出額外的catalina.bat窗口了。
start.sh同理。