配置python流的编码
有没有办法(在python2和python3上)配置配置python流的编码,python,python-3.x,windows,python-2.7,Python,Python 3.x,Windows,Python 2.7,有没有办法(在python2和python3上)配置tmp\u stdout以使用不同的编码 (我知道在python3上有编码参数,但在python2上这是不可能的) 导入临时文件 导入系统 原始数据=sys.stdout 将tempfile.TemporaryFile(mode=“w+”)作为tmp\U标准输出: #补丁系统 sys.stdout=tmp\u stdout 打印(“Windows控制台默认为系统OEM代码页(例如西欧的850),它支持传统的DOS程序和批处理脚本,但现在没有真正
tmp\u stdout
以使用不同的编码
(我知道在python3上有编码参数,但在python2上这是不可能的)
导入临时文件
导入系统
原始数据=sys.stdout
将tempfile.TemporaryFile(mode=“w+”)作为tmp\U标准输出:
#补丁系统
sys.stdout=tmp\u stdout
打印(“Windows控制台默认为系统OEM代码页(例如西欧的850),它支持传统的DOS程序和批处理脚本,但现在没有真正的用途。Python 3.6+使用控制台的Unicode API。在内部,这是UTF-16LE,但在缓冲区/原始层,它显示为UTF-8以实现跨平台兼容性。要在Python 2中获得类似的支持,请安装并启用
对于非控制台文件,Python 3中的默认编码是系统ANSI代码页(例如西欧的1252)。这是Windows中许多文本编辑器(如记事本)的经典默认设置。若要获得完整的Unicode范围,请使用参数encoding='utf-8'
覆盖编码。若要在Python 2和3中支持此功能,可以包装文件描述符(即fileno()
)使用io模块,该模块在Python 3发布(2.6+)时进行了后端口。例如:
导入系统
导入临时文件
将tempfile.TemporaryFile(mode='w+b')作为tmp:
tmp_stdout=io.open(tmp.fileno(),mode='w+',encoding='utf-8',closefd=False)
sys.stdout,original\u stdout=tmp\u stdout,sys.stdout
尝试:
打印(“Windows控制台默认为系统OEM代码页(例如西欧的850),它支持传统的DOS程序和批处理脚本,但现在没有真正的用途。Python 3.6+使用控制台的Unicode API。在内部,这是UTF-16LE,但在缓冲区/原始层,它显示为UTF-8以实现跨平台兼容性。要在Python 2中获得类似的支持,请安装并启用
对于非控制台文件,Python 3中的默认编码是系统ANSI代码页(例如西欧的1252)。这是Windows中许多文本编辑器(如记事本)的经典默认设置。若要获得完整的Unicode范围,请使用参数encoding='utf-8'
覆盖编码。若要在Python 2和3中支持此功能,可以包装文件描述符(即fileno()
)使用io模块,该模块在Python 3发布(2.6+)时进行了后端口。例如:
导入系统
导入临时文件
将tempfile.TemporaryFile(mode='w+b')作为tmp:
tmp_stdout=io.open(tmp.fileno(),mode='w+',encoding='utf-8',closefd=False)
sys.stdout,original\u stdout=tmp\u stdout,sys.stdout
尝试:
打印(“