Python:unicode字符U + 2212在使用子进程进行管道传输时导致错误

时间:2017-10-03 00:51:26

标签: python unicode encoding subprocess

我这里有一个非常奇怪和令人沮丧的问题。 考虑一个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>

我不知道如何解决这个问题,这让我发疯,因为我无法检查打印出这些类型字符的文件的输出。

0 个答案:

没有答案