问题描述
Docker
默认不支持中文,Docker
部署好程序输出日志或返回数据中有中文则显示乱码:
/**
* ������������������
* @return
*/
查看当前容器支持的编码格式
[root@gga5eezhgbyZ ~]# docker exec -it f361b7d84652 locale LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
POSIX
编码是不支持中文的,所以显示乱码。
解决方法
重新生成容器,通过
-e LANG="C.UTF-8"
设置LANG
环境变量值为C.UTF-8
:docker run --name tomcat_test -e LANG="C.UTF-8" -d tomcat:8.5.56-jdk8-corretto
使用
docker exec -it tomcat_test locale
查看编码环境,可以看到已经改为UTF-8
,日志输出中文及返回数据中包含中文均正常显示。[root@gga5eezhgbyZ ~]# docker exec -it tomcat_test locale LANG=C.UTF-8 LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_PAPER="C.UTF-8" LC_NAME="C.UTF-8" LC_ADDRESS="C.UTF-8" LC_TELEPHONE="C.UTF-8" LC_MEASUREMENT="C.UTF-8" LC_IDENTIFICATION="C.UTF-8" LC_ALL=