docker python3 编码问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position...

文章目录

  • 1、简介
  • 2、解决过程
  • 3、注意

1、简介

windows上没有问题的接口,centos上也没有问题,只有docker里面有问题:

UnicodeEncodeError: 'ascii' codec can't encode characters in position...

2、解决过程

locale命令看了一下系统编码
发现是

LANG="POSIX"
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=

于是按照传统的方式设置了一下,export LANG=“C.UTF-8”

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=

发现并不能解决,于是看了一下宿主机的编码方式:

LANG="en_US.UTF-8"

export LANG=en_US.UTF-8

成功:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

3、注意

千万要记住,在docker中系统环境变量不生效哈~

/etc/profile

这个文件不生效,要将环境变量设置在才会生效

/root/.bashrc

你可能感兴趣的:(//Python,//运维)