Docker 容器中文亂碼解決方案
阿新 • • 發佈:2019-02-10
遇到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
2. 匯入資料庫發現中文亂碼修改修改資料庫檔案,需要指定編碼格式為中文編碼
echo "set names utf8;" >> abc.sql
3. 設定系統編碼格式為中文編碼
echo "export.UTF-8" >> /etc/profilesource /etc/profile
4. 深坑!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/.