美文网首页Docker 学习指南
Docker 容器中文乱码解决方案

Docker 容器中文乱码解决方案

作者: 崔健敏 | 来源:发表于2018-09-18 10:37 被阅读0次

    遇到docker的中文乱码问题有两处

    1. vi 打开文件发现中文乱码,这时只需要修改.vimrc文件
    cat << EOF > /root/.vimrc
    :set encoding=utf-8
    :set fileencodings=ucs-bom,utf-8,cp936
    :set fileencoding=gb2312
    :set termencoding=utf-8
    EOF
    
    1. 导入数据库发现中文乱码修改修改数据库文件,需要指定编码格式为中文编码
     echo "set names utf8;" >> abc.sql
    
    1. 设置系统编码格式为中文编码
    echo "export.UTF-8" >> /etc/profilesource /etc/profile
    
    1. 深坑!docker centos6.8 容器没有 en_US.UTF-8 语言包!恭喜你,遇到深坑了!!
    # 安装 en_US.UTF-8 并配置环境
    RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8
    ENV LANGUAGE en_US:en
    ENV LC_ALL en_US.UTF-8
    
    # 不要高兴太早, locale-gen命令是没有的。
    locale-gen一般用于ubuntu,localedef一般用于centos。
    yum remove glibc-common -y
    yum install glibc-common -y
    localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
    localelocale -a
    

    docker的镜像都是阉割版,很多功能都被删除阉割了。
    localedef是绑定在 glibc-common 中的,阉割版的镜像中是没有这个命令的,我们需要重新安装glibc-common,首先卸载glibc-common,然后重新安装glibc-common,最后下载自己需要的语言包。
    localedef -v -c -i en_US.UTF-8为了使得镜像以后不再出现此坑,要制作镜像的时候指定环境变量

    vim /root/cjm/flume/Dockerfile
    ···
    #继承镜像
    FROM flume_v1.0
    #作者信息
    MAINTAINER by cgls
    #开始制作
    ENV LANG en_US.UTF-8
    ENV LANGUAGE en_US:en
    ENV LC_ALL en_US.UTF-8
    CMD ["/root/start.sh"]
    ···
    docker build -t flume_v2.0 /root/cjm/flume/.
    
    timg (15).jpg

    相关文章

      网友评论

        本文标题:Docker 容器中文乱码解决方案

        本文链接:https://www.haomeiwen.com/subject/krvynftx.html