- 问题描述
使用 docker 封装好的镜像运行程序时发现,如果有中文会报错:
UnicodeEncodeError: 'ascii' codec can't encode characters in position ****: ordinal not in range(128)
- 查找原因:
博客中给出了 Python 环境下遭遇此问题的方法1。查看一下系统环境编码:
>>> import sys
>>> sys.stdout.encoding
'US-ASCII'
然后可以通过:
- 设置环境变量LANG,
export LANG="en_US.UTF-8"
- 使用PYTHONIOENCODING,
PYTHONIOENCODING=utf-8 python printcn.py
- 重新定义标准输出。
解决这个问题,但是使用 docker 封装好的环境就不太好使用这种操作。
- 解决方法
# docker run 方式
docker run -e PYTHONIOENCODING=utf-8 mydocker_image:v1 /bin/bash
# 或者
docker run -ti --rm -e LANG=C.UTF-8 dghubble/python3
- Dockerfile 直接设置环境5:
ENV LANG C.UTF-8
Python3中遇到UnicodeEncodeError: ‘ascii’ codec can’t encode characters in ordinal not in range(128) ↩︎
docker python 编码问题 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position ↩︎
Using scdl in Docker: UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘\xb0’ in position 15: ordinal not in range(128) #62 ↩︎
Python, Docker - ‘ascii’ codec can’t encode character [duplicate] ↩︎