编码和解码是针对数据而言的,数据能干什么呢?无非就是用来显示,储存和传输的;

储存和传输数据当然是希望数据越小越好,所以发明了utf-8这种数据编码显示;它智能将英文用一个字节表示,欧洲的字符用两个字节表示,中文用三个字节表示。

数据显示的话不需要考虑数据的大小呢!因此统统采用国际标准的unicode标准来显示,每个字符都占用两个字节。无论是中文还是英文还是其他什么国家的文字。

数据你想显示,大小无所谓,那就用国际标准的呗,也就是unicode, 所以说你在打字时,屏幕上显示的都是用unicode解码好的,但你在中国很多都是用gbk解码显示的,如Windows下cmd。。好了,现在你写好字呢,你想把他保存下来,当然是数据越小越好,所以你就需要编码呢,编码你可以用encode这个方法,你把你写的字编码成utf-8这种编码格式的话保存的数据就变小呢!

如何编码成utf-8呢?

格式:对象.encode('utf8')

就将这个对象编码成了utf-8的数据类型来存储。

当然你也可以编码成国产的gbk的编码形式。顺便支持一下国产^_^

对象.encode('gbk')

就将这个对象编码成国产的gbk形式的编码来保存数据。

************************************************************************************************************

万一哪一天你想看你曾经写下的字。也就是在屏幕上显示数据。

如果你曾今用全球化的utf-8编码,那么你要进行解码,解码用decode这个方法,

格式:对象.decode('utf8')

如果你曾今用国产的gbk编码的,那么解码

格式:对象.decode('gbk')

恭喜你,你就可以悠闲的在屏幕上看着你曾今写下的字。

———————————————————————————————————————————————————————————————————————————————

cmd乱码问题?

比如:你在python3中写入一个字符串,2 :python3的解释器会自动对字符串进行unicode的编码,这种str就被编码成了unicode数据类型,unicode数据可以被任何的shell解码,支持cmd的gbk解码,但是如果你在python2中就不行呢?为什么呢?

#coding:utf8
s = '小明'

在python2中输入这段代码,放在cmd运行结果显示的是乱码,为什么呢?

因为当你写入这个字符串时,python2中的解释器就会进行按照申明的utf8进行编码成字节流,而这个文件也是以utf8格式保存的,关键是这个字节流向cmd传输时,cmd默认的是gbk格式解码的,而这个字节流是以utf8格式保存的,两种格式不一样,所以会出现乱码的问题。

如何解决呢?

先试第一种办法,就是将python2中的解释器按照声明gbk格式编码成字节流,看行不行?

#__author__ = 'admin'
#coding:gbk
s = '小明'
print(s)

结果发现是行的!

再试第二种方法,只能从代码入手呢?

可以将这个字符串编码成gbk格式不就能cmd不就能解码了吗?

第一步:因为这个小明已被python2的解释器编码成utf-8的字节流数据,所以我们先解码 s.decode('utf')  解码成unicode数据

第二步:对这个unicode数据的小明进行编码gbk格式的 s_unicode.encode('gbk')

第三步就可打印呢:

具体代码为

#coding:utf8
s = '小明'
s_unicode = s.decode('utf8')
s_gbk = s_unicode.encode('gbk')

print(s_gbk)

其实我们还可以对这段代码进行优化!

既然unicode数据能被任何格式的解码方式解码。没必要对其进行再编码成gbk格式;

所以我们只需第一步就可,没必要进行第二步的操作。

这两种方法都成功呢!

**************************************************************************************************************************************************************************************************

python3中,有两种数据类型,str和bytes。(str是一种编码好的字符串,万国用unicode,中国用gbk。或许日本使用jbk^_^。。而bytes是字节,只能用ascll码表示的0-255个字符)

python3中明确规定,str这个在屏幕上显示字符串统统用unicode数据表示。而用来储存和传输的数据bytes数据,这个bytes数据计算机更好理解。而人不好理解;

python3中,编码的同时会将数据变成byte类型;               byte类型是字节,只有ascll码中能打印出来;

解码的同时会将byte类型转换为字符串;

python3中的编码与解码(超好理解)的更多相关文章

  1. 转 python3中SQLLIT编码与解码之Unicode与bytes

    #########sample########## sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with ...

  2. python3中的编码与解码用法

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' #python3在编码时会把str编码成utf-8的bytes类型 ...

  3. python3中的编码

    python2字符串编码存在的问题: 使用 ASCII 码作为默认编码方式,对中文处理不友好 把字符串分为 unicode 和 str 两种类型,将unicode作为唯一内码,误导开发者 python ...

  4. 说说http协议中的编码和解码

    http://www.csdn1 2 3.com/html/itweb/20130730/29422_29378_29408.htm ****************************** 一. ...

  5. python基础之六:编码简介以及python3中的编码

    1.常见的四种编码方式的编码过程: ascii A : 00000010 8位 一个字节 unicode A : 00000000 00000001 00000010 00000100 32位 四个字 ...

  6. 在python3中的编码

    在python3中的编码 #_author:Administrator#date:2019/10/29import sysprint(sys.getdefaultencoding())#utf-8 打 ...

  7. python中base64编码与解码

    在python3中用base64进行编码和解码的时候特别注意: 题目要求: 准备一张.jpg图片,比如:mm.jpg,读取图片数据并通过b85encode加密之后写入到新文件mm.txt文件中,然后读 ...

  8. Python3中的编码问题

    编码方式介绍 我们首先来熟悉一下常见的一些编码方式,按照时间轴来划分,共有以下几种编码方式(常见): ASCII编码方式:对127个常见字符进行编码,其中包含了10个阿拉伯数字,共52个大小写英文字母 ...

  9. Android 中的编码与解码

    前言:今天遇到一个问题,一个用户在登录的时候,出现登录失败.但是其他用户登录都是正常的,经过调试发现登录失败的用户的密码中有两个特殊字符: * .#  . 特殊符号在提交表单的时候,出现了编码不一样的 ...

随机推荐

  1. phalcon——访问控制列表ACL

    一个完整的使用实例(将acl封装成一个插件使用): use Phalcon\Acl; use Phalcon\Acl\Role; use Phalcon\Acl\Resource; use Phalc ...

  2. LeetCode 530. Minimum Absolute Difference in BST (二叉搜索树中最小绝对差)

    Given a binary search tree with non-negative values, find the minimum absolute difference between va ...

  3. Linux系列教程(七)——Linux帮助和用户管理命令

    上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...

  4. Python对于CSV文件的读取与写入

    今天天气"刚刚好"(薛之谦么么哒),无聊的我翻到了一篇关于csv文件读取与写入的帖子,作为测试小白的我一直对python情有独钟,顿时心血来潮,决定小搞他一下,分享给那些需要的小白 ...

  5. WebSocket 详解教程

    WebSocket 详解教程 概述 WebSocket 是什么? WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 ...

  6. java 随记

    后台开发的过程中积累的关于java的杂记 架构 SSH框架 为什么要分层? 因为分层使代码变得清晰,容易写也容易阅读,更重要的是让代码扩展性更好,层与层之间的改动不会互相影响 各层的分工 dao--与 ...

  7. 如何用Android Studio同时使用SVN和Git管理项目

    这篇来讲讲如何在 Android Studio 上同时用 SVN 和 Git 来管理项目.我知道,你肯定会说我吃饱了撑着,没事找事做,为啥要同时用 SVN 和 Git 来管理项目.问题是,我也不想啊, ...

  8. Jungle Roads(最小生成树)

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. no device found for connection ‘ System eth0′问题

    我用的是centos6 在ping 百度的时候ping不通 提示错误no device found for connection ' System eth0′ 解决方法:虚拟机右上角有一个小电脑的标志 ...

  10. 一个JS效果竟然要研究一天,我是不是不适合做前端?

    前言 今天这篇文章的标题,显然是要搞事情.一个JS交互效果,居然花费了一天的宝贵时间才研究出来,我是不是不太适合做前端? 别急,搬好小板凳,正文从这开始- 本来今天下班回来感觉有点累,想着今天就别学了 ...