使用unicode进行奇怪的python打印行为

时间:2011-08-10 15:22:51

标签: python macos unicode

我想知道为什么我可以使用print在我的OSX Terminal.app中打印unicode字符串,但是如果我将stdout重定向到文件或将其传递给'more',我会得到一个UnicodeEncodeError。 python如何决定是打印unicode还是抛出异常。

1 个答案:

答案 0 :(得分:2)

因为您的终端编码设置正确,并且当您重定向到文件(或管道)时,编码被设置为默认编码(python2中的ASCII。),请在两次尝试print sys.stdout.encoding时(运行脚本时)作为stdout的终端,当你重定向到文件时),你会看到差异。

在命令行中尝试此操作:

$ python -c 'import sys; print sys.stdout.encoding;'
UTF8
$ python -c 'import sys; print sys.stdout.encoding;' | cat
None

可以找到更多信息HERE