不论使用urllib还是使用requests库经常会遇到中文编码错误的问题,我就经常遇到,因为python安装在windows平台上,cmd的默认编码为GBK,所以在cmd中显示中文时会经常提示gbk编码错误,后来找到了贴在,完美的解决了该问题,下面我分享给大家

UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 0: illegal multibyte sequence
在cmd中我们输出data.read()时,中文乱码,大部分时候是因为print函数,其实print()函数的局限就是Python默认编码的局限,因为系统是win7的,python的默认编码不是'utf-8',改一下python的默认编码成'utf-8'就行了,
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
可以看到该语句修改了python的默认编码为utf8,并赋予了我们的stdout输出,使得python的输出默认编码为utf8,但是当我们在cmd中输出还是中文乱码,这是cmd的锅,cmd不能很好地兼容utf8,而IDLE就可以,甚至在IDLE下运行,连“改变标准输出的默认编码”都不用,因为它默认就是utf8。如果一定要在cmd下运行,那就改一下编码,比如我换成“gb18030”,就能正常显示了:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码

data.decode('utf8')完美解决。

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码的更多相关文章

  1. C#中Encoding.Unicode与Encoding.UTF8的区别

    今天在园子首页看到一篇博文-简单聊下Unicode和UTF-8,从中知道了UTF-8是Unicode的一种实现方式: Unicode只是给这世界上每个字符规定了一个统一的二进制编号,并没有规定程序该如 ...

  2. python3.x设置默认编码(sys.stdout.encoding和sys.defaultencoding)

    查了一会资料得出的结论是如果你用的是python3.x,那么就最好别去设置sys.defaultencoding或者sys.stdout.encoding记住在需要编码的时候用encode,解码的时候 ...

  3. sys.stdout.write与sys.sterr.write(一)

    目标: 1.使用sys.stdout.write输入0-9数字 2.使用sys.stderr.write输出0-9数字 3.使用两种方式输出0-9,显示0变化到9的过程 1.使用sys.stdout. ...

  4. python 2.x 中print >> sys.out ,print 与sys.out.write()的关系

    print 会调用 sys.stdout 的 write 方法 以下两行在事实上等价: sys.stdout.write('hello,python'+'\n') print 'hello,pytho ...

  5. java.io.IOException: Error: JSP Buffer overflow

    错误 jsp页面报错如下: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java ...

  6. os.getcwd()、sys.path[0]、sys.argv[0]和__file__的区别,终于弄清楚了

    os.getcwd().sys.path[0].sys.argv[0]和__file__的区别 要分清这几个的区别与使用条件,实际测试一下是最准确的. 设计测试方法: 一个主模块用来运行,一个子模块用 ...

  7. javac -encoding utf8 in linux

    由于另外负责编码的同事用的是utf-8,我用的默认的编码格式gbk,在提交代码时,为了迁就他,我打算把格式用工具转成utf-8. 转化成果后,然后在make一下,发现javac -encoding u ...

  8. 创建Odoo8数据库时的“new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)“问题

    Odoo8创建数据库时,显示如下错误信息: DataError: new encoding (UTF8) is incompatible with the encoding of the templa ...

  9. <?xml version="1.0" encoding="UTF-8"?> 的作用?

    version="1.0" 声明用的xml版本是1.0 encoding="UTF-8" 声明用xml传输数据的时候的字符编码,假如文档里面有中文,编码方式不是 ...

随机推荐

  1. 忘掉Ghost!利用Win10自带功能,玩转系统备份&恢复 -- 关于系统恢复的深度思考

    上一篇文章讲了,系统可以正常启动,如何从D盘恢复系统到C盘的情况. 如果系统不能启动,要怎么去恢复系统,恢复后会是什么结果? 先说明系统结构: 系统版本:Windows 10 (1709) 硬盘1(5 ...

  2. Ubuntu18.04 安装32bit库后出现问题

    ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared ob ...

  3. 礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)

    礼物 题意: 求\[C(n,m)\ \%\ p\] \(n,m,p\le 10^9\),且若\(p=\prod_{i=1}^{k}{p_i}^{c_i}\),则\(\forall i\in [1..k ...

  4. 针对监控摄像机(海康、大华等)录像 .h264 文件的流媒体播放设计

    监控摄像机(海康.大华等)内部带的录像功能一般录制的是h264文件,这种文件格式简单的把每一帧h264字节数据保存到文件里. 实际使用中,可能需要对特定录像进行反复检测,以训练.改进视频检测算法的准确 ...

  5. Git 分支 (三) 分支管理&&分支开发工作流

    分支管理 git branch 命令不只是可以创建与删除分支. 如果不加任何参数运行它,会得到当前所有分支的一个列表: 注意 master 分支前的 * 字符:它代表现在检出的那一个分支(也就是说,当 ...

  6. Java编码中出现的乱码问题

    1 让eclipse新建的jsp页面直接默认的就是gb2312 打开Window->Preferences,打开General中的 Content Types,选中Text 这是改全部的TXT的 ...

  7. .NET面试题系列(十七)前端面试

    JavaScript  js如何实现继承 CSS 行内元素和块状元素的区别   CSS让2个DIV在同一行显示的解决方法 在CSS中,div属于块级元素,每个块级元素默认占一行高度,一行内添加一个块级 ...

  8. Aurora — 一个在 MSOffice 内输入 LaTeX 公式的很好用插件

    from http://blog.csdn.net/GarfieldEr007/article/details/51452986 工具名称:Aurora2x  (下载) 压缩包内有详细的安装说明. 刚 ...

  9. Codeforces Round #545 (Div. 2) C. Skyscrapers 离散化+贪心

    题目链接 给你一个n∗m的矩阵res,让你输出一个n∗m的矩阵a,这个矩阵满足:给你一个n*m的矩阵res,让你输出一个n*m的矩阵a,这个矩阵满足:给你一个n∗m的矩阵res,让你输出一个n∗m的矩 ...

  10. Vue技术内幕 出去看看吧

    Vue的 Vue构造函数的出生 出生文件 ./instance/index  实例方法和属性 .global-api/index   静态方法和属性 Vue平台化包装 Web平台化 vue 初始化 m ...