有没有办法(在 python2 和 python3 上)配置tmp_stdout为使用不同的编码?
(我知道在 python3 上有编码参数,但这在 python2 上是不可能的)
import tempfile
import sys
original_stdout = sys.stdout
with tempfile.TemporaryFile(mode="w+") as tmp_stdout:
# patch sys.stdout
sys.stdout = tmp_stdout
print("📙")
tmp_stdout.seek(0)
actual_output = tmp_stdout.read()
# restore stdout
sys.stdout = original_stdout
也就是为什么在Windows的默认编码cp1252,即使我的命令提示符usese cp850。
这是使用 python3.6 在 windows 上运行时得到的错误
Traceback (most recent call last):
File "Desktop\test.py", line 11, in <module>
print("📙")
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\tempfile.py", line 483, in func_wrapper
return func(*args, **kwargs)
File "C:\Users\AppData\Local\Programs\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 '\U0001f4d9' in position 0: character maps to <undefined>
30秒到达战场
相关分类