UnicodeDecodeError: ‘utf-8’ can’t decode byte 0x90 in position 4024984: invalid start byte

UnicodeDecodeError: ‘utf-8’ can’t decode byte 0x90 in position 4024984: invalid start byte

我是 运行 一个处于完整跟踪模式的子进程,并使用 logger.info()

显示它
> std = subprocess.run(subprocess_cmd, shell=True,
> universal_newlines=True, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
> 
> all_stdout = all_stdout + std.stdout + ‘\n’ all_stderr = all_stderr +
> std.stderr + ‘\n’
> 
> logger.info(‘\nstdout:\n’ + all_stdout + ‘\nstderr:\n’ + all_stderr)

但是在打印子流程时出现以下错误。

UnicodeDecodeError: 'utf-8' 编解码器无法确定位置 4024984:invalid 起始字节

中的字节 0x90

我试过将 universal_lines 设为 False,但它抛出 TypeError: must be str, not bytes.

我也试过这个 - std = subprocess.run(subprocess_cmd, shell=True, stdout=subprocess.PIPE,

> stderr=subprocess.PIPE, env=environ, encoding=‘utf-8’)

这给了我同样的 UnicodeDecodeError。

使用编码 encoding="unicode_escape" 而不是 encoding="utf-8"