我在Ubuntu终端(将编码设置为utf-8)中运行了两次,分别使用./test.py,然后使用./test.py >out.txt:uni = u"\u001A\u0BC3\u1451\U0001D10C"print uni如果没有重定向,它将打印垃圾。通过重定向,我得到了UnicodeDecodeError。有人可以解释为什么仅在第二种情况下才得到错误,或者更好地给出两种情况下幕后情况的详细解释吗?
3 回答

潇湘沐
TA贡献1816条经验 获得超6个赞
打印时进行编码
uni = u"\u001A\u0BC3\u1451\U0001D10C"
print uni.encode("utf-8")
这是因为当您手动运行脚本时,python会对它进行编码,然后再将其输出到终端,而当您通过管道传输时,python本身不会对其进行编码,因此在执行I / O时必须手动进行编码。
添加回答
举报
0/150
提交
取消