python 스크립트를 한 서버에서 새로운 도커 컨테이너로 마이그레이션하고 있습니다. 그러나 인코딩과 관련하여 이상한 문제에 직면하고 있습니다. 성공하지 못한 채 몇 가지 솔루션을 시도했습니다.crontab에서 python 스크립트를 실행할 때 인코딩 문제가 발생했습니다.
터미널에서 직접 스크립트를 실행하면 (수동으로) 성공과 함께 실행됩니다.
난 그냥 인코딩 확인하는 작은 스크립트를 생성 : 나는 crontab을 통해 실행한다면 나는 다음과 같은 오류가 발생 내가 수동으로 실행하는 경우UnicodeEncodeError: 'ascii' codec can't encode character
import sys
print sys.stdout.encoding
을 나는 다음과 같은 응답 얻을 :
을UTF-8
그럼, 크론에서이 스크립트를 추가하고 파일로 출력 감독 :
을 0그것은 비어있는 p.log를 저장 ... 그래서 나는 python이 crontab에서 인코딩을 얻지 못한다고 생각합니다.
나는 명령을 호출하기 전에 인코딩 변수에 crontab을 추가하는 몇 가지 제안을 보았지만 나에게는 효과가 없었다. exemple에 대한 는 :
* * * * * PYTHONIOENCODING=UTF-8 /tmp/p.py > /tmp/p.log
또는
* * * * * LANG=UTF-8 /tmp/p.py > /tmp/p.log
또한, 내 crontab 파일의 머리에 추가 된이 변수를 시도했다. 전혀 성공하지 못했습니다. 내가 설치 몇 로케일로 우분투를 사용하고
: 그것은 좋은 생각이 아니다 그래서 내가, 실행 여러 파이썬 스크립트를
LANG=en_US.UTF-8
LANGUAGE=
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=
: 여기
locale -a
C
C.UTF-8
en_US.utf8
POSIX
그리고 내 로케일 (외부 크론)입니다 그들을 편집 (또한, 내가 밖에서 cron 호출했을 때 완벽하게 실행)라고 말했다.