您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python 3:如何指定stdin编码

Python 3:如何指定stdin编码

Python 3里 不能 指望从ASCIIsys.stdin。它将stdin以文本模式打开,并对使用的编码进行有根据的猜测。该猜测可能归结为ASCII,但这不是给定的。请参阅有关如何选择编解码器的sys.stdin文档

像在文本模式下打开的其他文件对象一样,该sys.stdin对象派生自io.TextIOBase基类;它具有.buffer指向基础缓冲的IO实例的.raw属性(该实例又具有一个属性)。

sys.stdin.buffer属性包装在新io.TextIOWrapper()实例中以指定其他编码:

import io
import sys

input_stream = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')

或者,在运行python时将PYTHONIOENCODING环境变量设置为所需的编解码器。

从Python 3.7起,您还可以重新配置现有的std*包装器,前提是您在一开始就进行了配置(在读取任何数据之前):

# Python 3.7 and newer
sys.stdin.reconfigure(encoding='utf-8')
python 2022/1/1 18:29:28 有194人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶