python有关改变标准输出的默认编码的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python有关改变标准输出的默认编码的问题相关的知识,希望对你有一定的参考价值。

当我在python里运行下面这段代码时
import io
import sys
#改变标准输出的默认编码
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
为什么会出现AttributeError: 'file' object has no attribute 'buffer'这个问题?
网上别人这么做好像很正常啊?
试运行了下
print dir(sys.stdout)
发现并无包含buffer

而且当我删掉sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')里的.buffer时又出现AttributeError: readable这个新问题,不知道为什么

Python版本不一样,python2.x的没有,而python3.x的有。追问

那Python2.x应该怎么做?

追答

不知

参考技术A python3 改为sys.stdout= io.TextIOWrapper(sys.stdin.buffer,encoding='gb18030') 应该可以

Python改变标准输出默认编码方法

在做接口request时可能会遇到以下问题:

UnicodeEncodeError: 'gbk' codec can't encode character '\\xbb' in position 0: illegal multibyte sequence

出现以上问题是由于编码的问题,使用以下方法可以改变Python标准输出的默认编码:

1、sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')            #改变标准输出默认编码为utf-8

修改了python的默认编码为utf8,并赋予了我们的stdout输出,使得python的输出默认编码为utf8

2、sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')    #改变标准输出默认编码为gb18030(gbk)

修改了python的默认编码为gb18030(gbk),并赋予了我们的stdout输出,使得python的输出默认编码为gb18030(gbk)

以上是关于python有关改变标准输出的默认编码的问题的主要内容,如果未能解决你的问题,请参考以下文章

python编码问题——解决python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xXX&#(

Linux用户

python的字符编码

从定向输入

shell基础

Python中输入和输出(打印)数据