说这个问题之前必须的介绍关于编码的在我们这的发展:

首先电脑能识别的最初的语言是二进制 ---010101这种

然后在是我们知道的ASSIC码

再过了就是 gb2312----------->gbk1.0--------->最后是gbk18030

最后国际上为了统一编制了 Unicode  但是Unicode有三个版本Unicode‘UTF——32’, 每个字符都是4个字节,一个字节8bety,但美国人民有点不愿意,随后

改编成了Unicode‘UTF——16’每个字符都是两个字节,最后改编成现在的Unicode“UTF-8”在这里面,英文用的ASSIC码一个字节(美国人民应该很高兴),然后欧洲的一些语言字符是两个字节,一个中文就是三个字节

介绍完历史,接下来就讲讲为么子要encode 和decode:最根本的原因还是各个编码只能上级包容下级,下级想读取上级就会出现乱码(简单的说就是Unicode能识别gbk,而gbk想直接Unicode就会乱码,Unicode是向下包容的)

在Python2里面(估计现在不怎么用的吧): 默认识别是ASCLL码,所以不能识别中文。而现在国内的windows默认支持识别应该是gbk

在python2中的中文想要Windows识别就得通过 声明“#!_*_ coding :UTF-8 _*_ ” 源码格式为UTF-8,这样就可以识别输入的中文,但是python2想要在window上表现出来就必须通过编码为gbk格式才行这里就可以这样:方法一(感觉这方法是个鸡肋,方法二靠谱些):(假定已经声明是UTF-8)                                                                                                                                                  s =‘中文巴拉巴拉 ’

s_to_Unicode=s.decode("Unicode")   将‘中文巴拉巴拉’转为Unicode格式 这时候 再将 ,                                                                                                       s_to_Unicode =s.encode('gbk')    这会儿window就能识别s了print就不会出错了这里要解释两点内容: 为什么要先解码再编码而不直接编码;还有假如encode 和decode后面不写格式会怎样(内容太多我画了个图)

s_to_Unicode=s.decode("Unicode")    但是由于Unicode是向下兼容gbk的所以这里的print(s_to_Unicode)也能被windows是被显示成和s_to_Unicode =s.encode('gbk')一样的中文,但是他们的内部排序和占的内存都不相同不同这里就不深究了;这里补充解释一下为何不见gbk直接解码成utf-8,原因是你省了一步解码 成Unicode的过程,但是电脑不会省,所以说如果直接解码为utf-8会报错 其内部默认的过程是将gbk格式先解码为python2默认的ASCLL码再编码为UTF-8这肯定会乱的撒

方法二:直接声明“#!_*_ coding :gbk _*_ ”:这样print(s)window就能识别了

在python3 里面 :python3的默认文件编码是UTF-8  但是(重点)所有的字符都是Unicode格式,所以 s =‘中文巴拉巴拉 ’  可以被windows识别,如果你非要编码为gbk格式 这里输出的将不会是 ‘中文巴拉巴拉 ’,因为在python3里面特殊字符(即中文)编码会将其转换为另一种格式即byte字节类型,而byte类型只能识别英文等非特殊字符,所以在s =‘ i love 中文巴拉巴拉 ’编码为gbk时就能print(s)出 i love 中文巴拉巴拉  这里得到的byte类型是以gbk编码的byte类型,要转回Unicode就得解码gbk,与byte无关。python3在解码时会把byte类型转换成字符串

补充:byte类型相当于[0--255]之间的纯数字类型    在文件处理时:不同机器之间进行传输就必须用到这种类型

在python3 encode和decode 的使用的更多相关文章

  1. (十一)python3 encode()和decode()

    从英文意思上看,encode和decode分别指编码和解码.在python中,Unicode类型是作为编码的基础类型,即: decode encode str ---------> str(Un ...

  2. python3的encode()和decode()

    python3的encode()和decode() 在python3的内存中. 在程序运行阶段. 使⽤用的是unicode编码. 因为unicode是万国码. 什么内容都可以进行显示. 那么在数据传输 ...

  3. python encode和decode函数说明【转载】

    python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在p ...

  4. [转]python新手必碰到的问题---encode与decode,中文乱码--转载

    edu.codepub.com/2009/1029/17037.php 这个问题在python3.0里已经解决了. 这有篇很好的文章,可以明白这个问题: 为什么会报错“UnicodeEncodeErr ...

  5. Python学习-is和==区别, encode和decode

    一.is 和 == 介绍 1. is  比较的是两个对象的内存地址是否相同,它们是不是同一个对象. 2. ==  比较的是两个对象的内容是否相同. 在使用is前,先介绍Python的一个内置函数id( ...

  6. python 的 encode 、decode、字节串、字符串

    一.摆个图 DJ  DJ  DJ   Decode. J 解码 首先得知道字符串有哪些编码格式,至于为什么会有这么多的编码格式,以后再了解更新. 1.ASCII 占1个字节,只支持英文 2.GB231 ...

  7. python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str

    python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...

  8. 关于编码和解码问题——encode、decode

            一.背景和问题 近期在做一个关于声卡录音的项目,开发环境是win10 64位家庭中文版,pycharm2019.1,python3.6(Anaconda3),python模块pyaud ...

  9. [LeetCode] Encode and Decode Strings 加码解码字符串

    Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...

随机推荐

  1. 深入浅出 Viewport 设计原理

    Viewport 是 HTML5 针对移动端开发新增的一个 meta 属性, 它的作用是为同一网页在不同设备的呈现,提供响应式解决方案.这篇文章尝试通过循序渐进的方式,逐层探索 Viewport 的设 ...

  2. promethues安装

    prometheus 1. 下载安装 下载安装:https://github.com/prometheus/prometheus/releases/tag/v2.9.2 wget https://gi ...

  3. jmeter 5.1版本更新说明

    版本5.1 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢谢 新的和值得注意的 核心改进 JDBC测试已得到改进,能够设置init SQL语句并添加与不支 ...

  4. CSS常见的继承属性

    时间过得很快参加工作半个月了,利用属性的继承性可以有效提高代码的阅读性. 这里是我个人总结的,虽然不全,但是常见: 1.字体系列属性 font-family:字体系列 font-weight:字体的粗 ...

  5. Python for Data Analysis 学习心得(四) - 数据清洗、接合

    一.文字处理 之前在练习爬虫时,常常爬了一堆乱七八糟的字符下来,当时就有找网络上一些清洗数据的方式,这边pandas也有提供一些,可以参考使用看看.下面为两个比较常见的指令,往往会搭配使用. spli ...

  6. 二分查找LintcodeNo14

    14First Position of Target 二分查找的基础题 STL lower_bound实现 class Solution { public: /** * @param nums: Th ...

  7. 手算CRC及其实现

    前言: 这篇文章主要讲的是如何手算CRC以及运用CRC,更侧重方法的步骤,对原理方面不做探讨. 方法也是按照我个人理解的来,所以并不专业~ 一些搬过来的代码我也修改了一下下 如果想了解原理的可参考资料 ...

  8. 《C++Primer》第五版习题答案--第一章【学习笔记】

    C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...

  9. JWT(二):使用 Java 实现 JWT

    JWT(一):认识 JSON WebToken JWT(二):使用 Java 实现 JWT 介绍 原理在上篇<JWT(一):认识 JSON Web Token>已经说过了,实现起来并不难, ...

  10. Linux 7.5 SSH服务和SFTP服务分离

    SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...