Python 3里 不能 指望从ASCII
sys.stdin。它将
stdin以文本模式打开,并对使用的编码进行有根据的猜测。该猜测可能归结为
ASCII,但这不是给定的。请参阅有关如何选择编解码器的
sys.stdin文档。
像在文本模式下打开的其他文件对象一样,该
sys.stdin对象派生自
io.TextIObase基类;它具有
.buffer指向基础缓冲的IO实例的
.raw属性(该实例又具有一个属性)。
将
sys.stdin.buffer属性包装在新
io.TextIOWrapper()实例中以指定其他编码:
import ioimport sysinput_stream = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
或者,在运行python时将
PYTHONIOENCODING环境变量设置为所需的编解码器。
从Python
3.7起,您还可以重新配置现有的
std*包装器,前提是您在一开始就进行了配置(在读取任何数据之前):
# Python 3.7 and newersys.stdin.reconfigure(encoding='utf-8')



