我这里有一个非常奇怪和令人沮丧的问题。
考虑一个python文件,比如test_char.py
,其中包含一行:
print(u'\u2212')
如果我从命令行运行此文件,一切正常并打印出正确的字符:
−
但是,如果我想通过使用子进程运行它来以编程方式检查此文件的输出,就像我可能使用以下代码:
import subprocess
print(subprocess.run("python test_char.py", stdout=subprocess.PIPE))
文件本身会产生以下回溯错误:
Traceback (most recent call last):
File "test_char.py", line 1, in <module>
print(u'\u2212')
File "C:\<blahblahblah>\Python\Python36\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2212' in position 0: character maps to <undefined>
我不知道如何解决这个问题,这让我发疯,因为我无法检查打印出这些类型字符的文件的输出。