Ошибка Python: UnicodeEncodeError: кодек «ascii» не может закодировать символ - PullRequest
1 голос
/ 11 апреля 2019

У меня есть скрипт на python, в котором функция выводит несколько строк из файла ошибок.

Ошибка ниже, когда я запускаю скрипт через jenkins.

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)

Кодировка по умолчанию для python: UTF-8

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

Я пытался экспортировать переменную PYTHONIOENCODING=UTF-8 перед выполнением сценария.

Добавлена ​​строка ниже в начале скрипта-

# coding: utf8

def _check_gpderrors(gdplogfile):
    LOGERROR_REGEX = re.compile("^\d+-\d+-\d+ \d+:\d+:\d+ Error:")

    errors = []
    import codecs
    f = codecs.open(logfile, 'r', encoding='utf-8')
    for line in f:
        if re.match(LOGERROR_REGEX, line):
            errors.append(line.strip())
    f.close()
    return errors

errors = {}
errors = _check_gdperrors(log_file)
for error in errors:
        msg = project_info + ': execution failed with error: ' + error + '\n'
        print('ERROR:' + msg)
        logs.append(msg)
        script_error = True

1 Ответ

0 голосов
/ 11 апреля 2019

вы можете попробовать использовать:

print('ERROR:' + msg.encode('ascii', 'ignore').decode('ascii'))

Дополнительная информация: UnicodeEncodeError

...