通过 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 的转换过程中,但不确定。
这个问题在这里得到了最好的解释:https://github.com/python/cpython/issues/105312。
解决方案是
set PYTHONIOENCODING=utf-8
在运行脚本之前。