Если мой кодировщик Python по умолчанию и система UTF-8, как я получаю эту ошибку-UnicodeEncodeError: кодек 'ascii' не может кодировать символ '\ u0447' - PullRequest
0 голосов
/ 13 апреля 2019

Ошибка ниже, когда я выполняю код Python из jenkins -

File "/export/app-33-1/jenkins/w/ee4a092a/install/src/linux-amd64-gcc_4_4-release/bin/eat2/eat.py", line 553, in _runtest
print('ERROR:' + msg)
UnicodeEncodeError: 'ascii' codec can't encode character '\u0447' in position 315: 
ordinal not in range(128)

Откуда именно берет кодировщик - ascii, поскольку я изменил кодировку по умолчанию для python, jenkins главный и подчиненный процессы, а также системы.

Даже добавлено # coding: utf-8 в начале скрипта, но не сработало.

Речь идет не только о печати строки в консоли, мой код пытается получить доступ к некоторым файлам, а путь к файлу содержит несколько русских символов, поэтому все не получается.

Когда я запускаю этот же скрипт вручную из консоли linux, все работает.

Есть идеи, что может быть решением здесь?

1 Ответ

1 голос
/ 15 апреля 2019

Вопреки распространенному мнению, кодировка по умолчанию для встроенной функции open(), а также потоков sys.std* (print() использует sys.stdout) не всегда является UTF-8 в Python 3. Это может быть на одной машине, но не на другой, потому что это зависит от платформы.

С документы для sys.stdin/stdout/stderr:

Эти потоки представляют собой обычные текстовые файлы, подобные тем, которые возвращаются функцией open (). Их параметры выбираются следующим образом:

  • Кодировка символов зависит от платформы. Платформы, отличные от Windows, используют кодировку локали [...]

и позже:

На всех платформах вы можете переопределить кодировку символов, установив переменную среды PYTHONIOENCODING перед запуском Python [...]

Обратите внимание, что существуют некоторые исключения для Windows.

Для файлов, открытых с помощью open, вы можете легко получить управление, явно установив параметр encoding=.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...