使 subprocess.run() 在 Windows 上打印非拉丁字符串

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

通过 subprocess.run() 运行此代码会在 Windows 上产生

UnicodeEncodeError

import subprocess
result = subprocess.run(
    ["python", "-c", "print('Делавер')"],
    text=True,
    capture_output=True,
)
print(result.stdout)
print(result.stderr)

text=True
更改为
encoding="utf8"
没有帮助。

错误信息:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "D:\Anaconda3\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
  UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-6: character maps to <undefined>

奇怪的是,打印字符串是相当简单的行为,即使是非拉丁字符。我知道冲突发生在从 utf8 到 cp1251 的转换过程中,但不确定。

python-3.x subprocess
1个回答
0
投票

这个问题在这里得到了最好的解释:https://github.com/python/cpython/issues/105312

解决方案是

set PYTHONIOENCODING=utf-8
在运行脚本之前。

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