这个问题已经在这里有一个答案:
- 如何更改标准输入编码的蟒蛇 4个回答
虽然移植在Python 2到Python 3代码,我读取标准输入的UTF-8文本时遇到了这个问题。 在Python 2,这工作得很好:
for line in sys.stdin:
...
但是Python 3预计从sys.stdin ASCII,如果有输入非ASCII字符,我得到的错误:
UnicodeDecodeError错误:“ASCII”编解码器不能在位置解码字节.. ..:在范围序数不(128)
对于一个普通的文件,我会在打开文件时指定编码方式:
with open('filename', 'r', encoding='utf-8') as file:
for line in file:
...
但我怎么能指定标准输入编码? 其他SO职位(例如如何改变蟒蛇标准输入编码 )使用建议
input_stream = codecs.getreader('utf-8')(sys.stdin)
for line in input_stream:
...
然而,这并不工作在Python 3我仍然得到同样的错误消息。 我使用Ubuntu 12.04.2和我的语言环境设置为en_US.UTF-8。