场景

本机idea开发,运行程序,控制台日志中文正常。

基于某docker基础镜像,将springboot打包后的启动jar包做成镜像后,启动容器发现控制台中文乱码。

原因

大概率是因为系统默认编码导致,有些docker基础镜像不像标准的Linux操作系统对中文编码做了很好的处理和识别,设置系统默认编码也容易。

但是对于docker镜像,我们一般追求 “简” 也就是 “体积小” ,所以可能会有很多本来标准操作系统中有的包和库没有的情况,也可能这个docker镜像的默认编码不是我们想象的那样。

解决

你可以尝试在启动springboot包的时候添加如下启动参数,试试能否解决你的问题。

-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8


这里要声明的是: 导致乱码的原因有很多,这个解决方法只是解决其中一个原因的办法,并不一定能解决你的乱码问题,以具体验证为准。试一个方法就可以排除一种可能性。



(END)