部署问题集合(二十三)设置Docker容器内的中文字符集,解决某些情况下中文乱码的问题

前言:

  • 同事给了一个服务,在Windows环境下怎么跑都正常,但一到Linux虚拟机里就中文乱码
  • 起初就想到了可能是字符集的问题,但调整了半天也没见效果,最后隔了几天突然想到,我是构建Docker跑的,而且基础镜像就是centos,封闭的环境下修改外部虚拟机的字符集肯定没作用啊,笨比
  • 然后就想到了进入容器内部,修改容器内部的字符集,果然就好了
  • 若要修改成其他字符集,同理可得(有没有感觉这句话莫名熟悉)

修改正在运行的Docker容器内的字符集

  • 先进入Docker容器:docker exec -it 容器ID /bin/bash
  • 查看是否支持中文字符集:locale -a | grep zh(PS:这一步如果之前没有特意下过,那么大概率就是没有,所以不用担心,继续老老实实下一步)
  • 下载中文字符集:yum install kde-l10n-Chinese -y
  • 设置名称:localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
  • 看看现在有没有:locale -alocale -a | grep zh
  • 把设置写到配置文件里:echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
  • 设置中文字符集:设置俩,第二步可能会报错,但我也不知道为啥报错了还能设置成功(-_-)
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
  • 查看是否修改成功:locale

若通过Dockerfile构建,想从源头开始设置

  • 修改Dockerfile中的内容,添加如下代码,然后重新构建即可
RUN yum install -y kde-l10n-Chinese && \
    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
    echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf && \
    yum clean all

ENV LANG="zh_CN.UTF-8" \
    LC_ALL="zh_CN.UTF-8"

参考

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值