UnicodeDecodeError:“utf-8”无法解码位置 4024984 中的字节 0x90:无效的起始字节

问题描述 投票:0回答:2

我正在完全跟踪模式下运行子进程并使用 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 中的字节 0x90:无效的起始字节

我尝试将 universal_lines 设置为 False 但它抛出 TypeError: 必须是 str,而不是 bytes。

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

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

这给了我同样的 UnicodeDecodeError。

python subprocess
2个回答
3
投票

使用编码

encoding="unicode_escape"
而不是
encoding="utf-8"


0
投票

部分不相关,但对于完全相同的错误,仅使用我的数据

byte_data.decode("latin-1")
有效

© www.soinside.com 2019 - 2024. All rights reserved.