docker python 編碼問題 UnicodeEncodeError: 'ascii' codec can't encode characters in position

問題說明

docker的python容器中執行print(‘測試’),常見的錯誤提示,在宿主機不會出現

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

原因分析:

原因是因爲locale 的設置導致 shell 的stdin/stdout/stderr 的默認編碼爲ascii,當用ascii編碼去解釋python3默認unicode編碼的時候,自然會有問題

解決方法:

python3 的解決方式是 容器在初始化時候 需要設置shell的stdin/stdout/stderr 的默認編碼方式爲 utf-8,需要重啓容器

docker run -e 指定python io encoding編碼格式:

# docker run 方式
docker run -e PYTHONIOENCODING=utf-8 mydocker_image:v1 /bin/bash

docker compose 編排方式:

# docker-compose 方式
 environment:
      - PYTHONIOENCODING=utf-8

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章