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

储存和传输数据当然是希望数据越小越好,所以发明了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. 谈谈你对web标注和W3c的理解和认识

    web标准简单来说可以分为结构.表现和行为.其中结构主要是有HTML标签组成.表现即指css样式表,通过css可以是页面的结构标签更具美感.行为是指页面和用户具有一定的交互,同时页面结构或者表现发生变 ...

  2. 有序线性表(存储结构数组)--Java实现

    /*有序数组:主要是为了提高查找的效率 *查找:无序数组--顺序查找,有序数组--折半查找 *其中插入比无序数组慢 * */ public class MyOrderedArray { private ...

  3. Django Web框架入门

    一.Django介绍 Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式.Django的主要目的是简便.快速的开发数据库驱动的网站.它强调代码复用,多个组件可以很 ...

  4. jquery ajax 数据传输

    在 form表单中,需要发送给后台的是一串长数据,后台才能接受,而用户则只需要输入字符串中的一部分,这种情况下,就需要将用户输入内容,和剩余部分进行拼串,然后添加进 formData 中传输. 另一种 ...

  5. javascript 之作用域链-07

    复习作用域 上一节我们说到作用域:是指变量可以访问的范围,他规定了如何查找变量,以及确定当前执行代码对变量的访问权限:也说到静态作用域即词法作用域,是在编译阶段决定变量的引用(由程序定义的位置决定,和 ...

  6. linux进程资源占用高原因分析命令记录

    1.查看进程的线程: ps -eLf|egrep 'gateserver|UID' 2.跟踪线程调用: strace -p 15530 3.统计线程中函数的调用小号CPU时间: strace -p 1 ...

  7. Linux分区规划与xshell使用排错

    1.1 没有重要数据 /boot   200M    存放系统的引导信息 内核 swap   交换分区   防止内存用光了 临时的一个内存 如果你的内存小于8G swap是内存的1.5倍   如果你的 ...

  8. D3.js使用过程中的常见问题(D3版本D3V4)

    目录 一.学习D3我必须要学习好SVG矢量图码? 二.如何理解D3给Dom节点绑定数据时的Update.Enter和Exit模式 三.D3绑定数据时用datum与data有什么不一样? 四.SVG图中 ...

  9. Android 开发笔记___实战项目:购物车

    购物车的应用很广泛,电商app基本上都有它的身影.由于它用到了多种存储方式,通过项目对数据的存储有更高层次的了解. 1.设计思路 首先看看购物车的外观.第一次进入时里面是空的,去购物页面加入购物车以后 ...

  10. 无阻赛的脚本(js脚本延迟方法)

    js脚本的加载与执行 1.延迟脚本(defer属性) 带有defer属性的script标签,可以放置在文档的任何位置,在页面解析到该标签时,会开始下载该脚本,但是不会立即执行,直到dom加载完成(on ...