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

储存和传输数据当然是希望数据越小越好,所以发明了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. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  2. LINUX 笔记-Shell 脚本控制语句

    1.if 语句 if condition1;then command1 elif condition2;then command2 else command3 fi 2.case 语句 case va ...

  3. wsimport 命令不是内部命令

    问题: 1. webservice在输入命令的时候wsimport的时候会出现如下错误: wsimport不是内部或者外部命令. 2. javac不是内部或者外部命令 3 java 就可以显示配置成功 ...

  4. Java微信公众平台开发_02_启用服务器配置

    源码将在晚上上传到 github 一.准备阶段 需要准备事项: 1.一个能在公网上访问的项目: 见:[  Java微信公众平台开发_01_本地服务器映射外网  ] 2.一个微信公众平台账号: 去注册: ...

  5. [Bayesian] “我是bayesian我怕谁”系列 - Variational Inference

    涉及的领域可能有些生僻,骗不了大家点赞.但毕竟是人工智能的主流技术,在园子却成了非主流. 不可否认的是:乃值钱的技术,提高身价的技术,改变世界观的技术. 关于变分,通常的课本思路是: GMM --&g ...

  6. hdu 1520 Anniversary party(入门树形DP)

    Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6926   Accepted: 3985 ...

  7. 修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

    在项目开发的时候,经常需要将文件上传到指定的目录下. 例如这次用thinkphp5的时候,需要在public目录下建立uploads目录用于存放上传的资源. 首先在命令窗口下输入: mkdir upl ...

  8. VMware驱动程序"vmci.sys"的版本不正确 怎么解决

    解决办法: 1.创建好虚拟机之后,别打开电源,然后到建好的虚拟机文件夹里: 2.找到后缀vmx的文件,记事本打开: 3.找到vmci0.present='TRUE',把true改为false: 4.保 ...

  9. 【Win 10 应用开发】UI Composition 札记(三):与 XAML 集成

    除了 DirectX 游戏开发,我们一般很少单独使用 UI Composition ,因此,与 XAML 互动并集成是必然结果.这样能够把两者的优势混合使用,让UI布局能够更灵活. 说到与 XAML ...

  10. 07.十分钟学会tomcat数据源

    一.数据源的作用及操作原理 1,  首先先看下传统JDBC的操作 在tomcat中使用数据库连接池操作数据库 2,JNDI属于命名及目录查找接口,在javaee的javax.naming包中 这套AP ...