项目中因为编码问题造成的问题实在让人头疼,在调试代码的时候,博主有一个post请求调用外部接口的功能,在单元测试中能调通,但是在tomcat容器下,post请求中的参数就乱码了。找了半天,终于找到了原因分享一下 。

首先统一所有项目,文件的编码格式都为utf-8

其次,在server.xml文件里面设置端口的编码为utf-8,这是最常见的设置,并未对在下的代码生效。

于是继续调试,怀疑可能是jvm参数的配置问题,于是在bin 目录下的catalina 配置文件中,添加以下设置

set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%  -Dfile.encoding=UTF-8" 

果然解决了问题 ,不过tomcat控制台却乱码了如下


查看控制台信息 发现是因为编码冲突导致的,控制台为GBK ,于是乱码


接下来需要修改cmd命令行的编码,打开注册表,找到HKEY_CURRENT_USER→Console→Tomcat(如果你改了tomcat的标题栏,这里就是你打开的命令窗口的名字),找到CodePage项,没有则创建,更改值为十进制的65001,点击确定。




问题解决。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐