重定向到文件时出现UnicodeDecodeError

我在Ubuntu终端(将编码设置为utf-8)中运行了两次,分别使用./test.py,然后使用./test.py >out.txt:


uni = u"\u001A\u0BC3\u1451\U0001D10C"

print uni

如果没有重定向,它将打印垃圾。通过重定向,我得到了UnicodeDecodeError。有人可以解释为什么仅在第二种情况下才得到错误,或者更好地给出两种情况下幕后情况的详细解释吗?


至尊宝的传说
浏览 458回答 3
3回答

潇湘沐

打印时进行编码uni = u"\u001A\u0BC3\u1451\U0001D10C"print uni.encode("utf-8")这是因为当您手动运行脚本时,python会对它进行编码,然后再将其输出到终端,而当您通过管道传输时,python本身不会对其进行编码,因此在执行I / O时必须手动进行编码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python