Python 3之前,str对象只是一个简单的字符序列。base64解码后,得到的是一个字节序列:

>>> base64.b64decode('5Yac5aSr5a6J5YWo56S+5Yy6')

'\xe5\x86\x9c\xe5\xa4\xab\xe5\xae\x89\xe5\x85\xa8\xe7\xa4\xbe\xe5\x8c\xba'

这个字节序列到底是什么,取决于你的应用上下文。它可能是一个 ASCII 文本,可能是一个 UTF-8 文本,也可能是一个 GBK 文本。

如果你的终端环境或者网页环境,跟这个字节序列的编码方式一致,便可正常显示。例如,我的终端环境是 UTF-8,因此可以正常显示你解码后的字符串:

>>> print(base64.b64decode('5Yac5aSr5a6J5YWo56S+5Yy6'))

农夫安全社区

看截图,你用的应该是Windows的终端环境,编码应该是 GBK,所以你需要手工进行编码转换,从 UTF-8 换成 GBK :

>>> print(base64.b64decode('5Yac5aSr5a6J5YWo56S+5Yy6').decode('utf8').encode('gbk'))

那么,Python 3为啥不会乱码咧?——它想解决各种奇形怪状的乱码问题。Python中的str对象,不是简单的字节序列,它保存统一的Unicode码位,与编码方式无关。当你输出str对象时,Python根据终端环境编码,悄悄帮你转化成对应编码的字节序列。这样一来,终端乱码问题就得到根治。

关于文本编码相关的原理和最佳实践,可以参考我先前写的一篇文章:一文说清文本编码那些事 。如果有什么地方没有讲明白,请提出来,我再进一步完善。

洞悉文本编码本质,也就不畏惧任何乱码问题了。

python中base64 decode_python2解码base64中文乱码怎么解决?相关推荐

  1. linux unzip乱码,Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法 Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如"资料.zip"时,如果直接使 ...

  2. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况(split、zip...)

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...

  3. python中prin输出时出现中文乱码

    出现的问题: 在java中,print输出是要有括号进行包裹的,于是,我就习惯性写出了以下的形式 pi = 3.14 r = float(input('请输入半径:')) area=2*pi*r*r ...

  4. [转]IE、FireFox、Chrome浏览器中关于URL传参中文乱码,解决兼容性问题!

    原文地址:https://cloud.tencent.com/developer/article/1334736 前台用url传值中文,后台用request.getParameter接收参数.在Fir ...

  5. python基础系列教程——Python中的编码问题,中文乱码问题

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 如果不声明编码,则中文会报错,即使是注释也会报错.只要写中文,必须加一句:# -- coding:utf-8 --.原因:答案在PEP-02 ...

  6. python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法

    解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...

  7. python存成csv文件时中文乱码_Python在向CSV文件写中文时乱码的处理办法

    前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode. 当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的. 对 ...

  8. linux中popen汉字乱码,Python中使用subprocess.Popen返回值乱码解决方案

    Python中使用subprocess.Popen返回值乱码解决方案 问题描述 在python 2.7中,使用subprocess.Popen()调用*nix命令,并通过管道,获取其输出,并将其返回值 ...

  9. QT中中文乱码的解决

    2019独角兽企业重金招聘Python工程师标准>>> QT中中文乱码的解决: #include <QtGui/QApplication> #include <QT ...

最新文章

  1. NestedScrolling CoordinatorLayout
  2. flutter报错Could not connect to lockdownd, error code -
  3. POM.xml 标签详解
  4. 操作系统,看这一篇足够了!
  5. iOS 9应用开发教程之多行读写文本ios9文本视图
  6. U-Boot常用命令
  7. legend3---阿里云如何多个域名指向同一个网站
  8. python提取个十百千位数字_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...
  9. mac使用被动ftp模式(pasv)_ftp主动模式和被动模式
  10. Python 2.x vs Python 3.x(四)—— TypeError: unhashable type
  11. Android-JNI开发系列《二》-在jni层的线程中回调到java层
  12. 如何在水晶报表9中实现选择打印机打印?
  13. 用VC进行64位编程
  14. 计算机前沿科学与发展,《数据与计算发展前沿》正式创刊
  15. 软件项目风险评估报告
  16. 重启计算机有什么用,强制重启电脑有什么危害
  17. 新时代火热技术栈:大数据->人工智能(AI)->区块链
  18. 如何用3天在成都逛吃玩过瘾?
  19. php tipask yii 单点登录_favorite-link/README.md at master · cccthon/favorite-link · GitHub
  20. BAT薪资大揭底:AI程序员80万太少!程序员薪资的天花板在哪?

热门文章

  1. 在word上写博客直接发到CSDN ——失败哈哈
  2. Linux - 内存管理
  3. 图片如何无损放大?分享一个简单好用的工具
  4. python code mudule,pipe,stdin,stdou,IMPORTANT
  5. 分享两篇文章 - PMs in Microsoft
  6. Cocos Creator 微信小游戏 填坑记录
  7. 【mac使用技巧】程序坞上的下载不见了该如何解决呢?
  8. 文件已在explorer.exe中打开无法删除,解决办法如下,全图
  9. 利用Py-Socket模块做的一个不登陆windows服务器自动实现替换或者调用自动拨号功能...
  10. 【实用技巧】MAC苹果电脑怎么远程?