通常咱们在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同理。