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

储存和传输数据当然是希望数据越小越好,所以发明了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. Linux中的各种软件安装

    Linux下的软件形式 Linux上的软件有几种常见的方式 二进制发布包 软件包已经针对具体平台完成了编译和打包,解压后即可以使用,最多去改改配置文件,也是Linux上最通用和常见的软件包发布形式 例 ...

  2. django 实现登录时候输入密码错误5次锁定用户十分钟

    在学习django的时候,想要实现登录失败后,进行用户锁定,切记录锁定时间,在网上找了很多资料,但是都感觉不是那么靠谱, 于是乎,我开始了我的设计,其实我一开始想要借助redis呢,但是想要先开发一个 ...

  3. C++获取基类指针所指子类对象的类名

    我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 关键字 typeid, ...

  4. Leetcode题解(十五)

    42.Trapping Rain Water 题目 这道题目参考http://www.cnblogs.com/felixfang/p/3713197.html 观察下就可以发现被水填满后的形状是先升后 ...

  5. Life is a Line

    Life is a Line Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Tot ...

  6. 0_Simple__fp16ScalarProduct

    使用cuda内置无符号整数结构(__half2)及其汇编函数,计算两个向量的内积. 源代码: #include <cstdio> #include <cstdlib> #inc ...

  7. 小明滚出---响应对象HttpServletResponse和请求对象HttpServletRequest实例

    <Servlet类的Java> @WebServlet("/studentServlet") public class StudentServlet extends H ...

  8. ajax跨域之---服务器端代理实现

    介绍一种不是通过js实现跨域的方式: 通过服务器端代理实现. 具体的思路:由于浏览器有同源策略限制,(同源策略即:https://developer.mozilla.org/zh-CN/docs/We ...

  9. HTML5与搜索引擎优化[转载]

    原文:http://lusongsong.com/reed/398.html 我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash.Android4.0不支持fla ...

  10. Windows 配置 allure report 环境

    1:配置Java环境(运行allure 需要) 2:安装powershell 3:安装scoop方法 :运行 powershell 输入 : iex (new-object net.webclient ...