Centos/Docker 环境中文乱码如何解决

一.Centos环境乱码

1.通过locale 查看当前环境的编码情况:

Centos/Docker 环境中文乱码如何解决_第1张图片

 2.locale -a查看系统支持的编码:

Centos/Docker 环境中文乱码如何解决_第2张图片

 一般中文乱码,有两种情况,一是当前环境的编码不支持中文,二是当前环境的编码系统并不支持,也就是说通过locale中看到的编码再locale -a中并不存在。所以如果是第一种情况,换成系统支持中文的编码就可以了(如果系统不存在支持中文的编码,可以通过安装编码来解决),第二种情况,可以换成系统支持的编码,也可以通过安装编码来解决。

1.切换系统编码(将系统编码切换为 en_US.utf8,C.utf8, 切换成其他的utf8的理论上应该也可以,我没有去试过,我用的是这两种):

(1)通过grep 筛选查询系统是否支持编码 locale -a | grep en_US.utf8

(2)修改系统环境变量vim /etc/profile  设置export LANG=en_US.utf8:

 

(3)加载环境变量输入指令即可:source /etc/profile

(4)验证是否修改成功 locale

Centos/Docker 环境中文乱码如何解决_第3张图片

(5)如果没有改重启系统reboot试试。

 二.Docker 环境中文乱码

 1.查看docker 环境是否有问题,先通过 bash指令进入docker docker exec -ti server_1  /bin/bash(server_1 是服务器的名称,也可以通过docker ps 查看docker id,通过id访问):

 进入docker 系统后,按照上面centos查看的方法,即locale和locale -a 查看系统当前编码,和系统支持的编码

2.如何切换docker环境的编码

找到服务的Dockerfile文件,在文件里加入要切换的编码 ENV LANG en_US.utf8(一定要确保系统有这个编码 通过locale -a查看):

FROM jdk8:1.0
EXPOSE 8080

ENV LANG en_US.utf8
VOLUME /tmp
ADD ./target/server.jar  /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

重新编译打包服务既可以

通过locale指令查看编码转换,即修改成功

你可能感兴趣的:(随笔,docker,centos,linux)