emm,反正就不管各种原因吧,系统就是要在Windows上部署。
- Windows 10 操作系统
- Tomcat 8.5
- 项目是UTF-8编码
相信来到这篇文章的朋友,应该是遇到同样问题的,在idea中测试挺好,打包带走,tomcat,启动,come on !
启动正常,打开页面,what?中文乱码了。
页面显示中的中文乱码?前后端交互中文乱码?还是全部中文都乱码?
其实这里很简单,因为项目是utf-8编码,那么就把jvm启动参数改一下。
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 (是不是似曾相识?加入该语句)
tomcat目录 —— bin文件夹 —— catalina.bat :
:gotJsseOpts
set “JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8”
set “JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8”
好了,现在重启服务器,页面显示正常,前后台交互传值也是utf-8的编码。但是随即新的问题出现,控制台乱码了。
查阅了资料,因为Windows系统下,CMD的编码是GBK,自然中文乱码,解决方案:
1.打开一个新的CMD窗口,在CMD中输入 CHCP 65001 ,设置编码为UTF-8
注:CHCP是一个计算机指令,能够显示或设置活动代码页编号。
65001 UTF-8代码页
950 繁体中文
936 简体中文默认的GBK
437 MS-DOS 美国英语
通过切换路径,进入tomcat目录下,运行startup.bat,不出意外,控制台不再乱码。
2.上个方法,有些麻烦的是,每次都需要如此操作启动服务器。那么还可以通过设置默认编码。
通过修改注册表:
在运行中通过regedit进入注册表
找到HKEY_CURRENT_USER\Console%SystemRoot%_system32_cmd.exe 新建一个
DWORD(32位值),命名为CodePage,值设为65001
若是能成功,那自然是好的,目前网上很多方案都是这样,但是不知为何的是,我并没有生效。
3.第三种方案
依然是修改注册表:
在运行中通过regedit进入注册表
找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
新建-字符串值,命名autorun,右键修改:数值数据填写 “chcp 65001”,确定。
现在,直接启动服务器,控制台中文正常显示。
经常遇到这样那样的乱码,每次搞得心烦意乱,时间久了老是忘记之前的具体解决方案,现在记录在案,以备不时之需。