在python3 encode和decode 的使用
说这个问题之前必须的介绍关于编码的在我们这的发展:
首先电脑能识别的最初的语言是二进制 ---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 的使用的更多相关文章
- (十一)python3 encode()和decode()
从英文意思上看,encode和decode分别指编码和解码.在python中,Unicode类型是作为编码的基础类型,即: decode encode str ---------> str(Un ...
- python3的encode()和decode()
python3的encode()和decode() 在python3的内存中. 在程序运行阶段. 使⽤用的是unicode编码. 因为unicode是万国码. 什么内容都可以进行显示. 那么在数据传输 ...
- python encode和decode函数说明【转载】
python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在p ...
- [转]python新手必碰到的问题---encode与decode,中文乱码--转载
edu.codepub.com/2009/1029/17037.php 这个问题在python3.0里已经解决了. 这有篇很好的文章,可以明白这个问题: 为什么会报错“UnicodeEncodeErr ...
- Python学习-is和==区别, encode和decode
一.is 和 == 介绍 1. is 比较的是两个对象的内存地址是否相同,它们是不是同一个对象. 2. == 比较的是两个对象的内容是否相同. 在使用is前,先介绍Python的一个内置函数id( ...
- python 的 encode 、decode、字节串、字符串
一.摆个图 DJ DJ DJ Decode. J 解码 首先得知道字符串有哪些编码格式,至于为什么会有这么多的编码格式,以后再了解更新. 1.ASCII 占1个字节,只支持英文 2.GB231 ...
- python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str
python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...
- 关于编码和解码问题——encode、decode
一.背景和问题 近期在做一个关于声卡录音的项目,开发环境是win10 64位家庭中文版,pycharm2019.1,python3.6(Anaconda3),python模块pyaud ...
- [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 ...
随机推荐
- 五分钟学Java:可变参数究竟是怎么一回事?
在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...
- NOIP2009 压轴---最优贸易
链接:https://ac.nowcoder.com/acm/contest/959/H来源:牛客网 C国有n个大城市和m条道路,每条道路连接这n个城市中的某两个城市.任意两个城市之间最多只有一条道路 ...
- 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务
实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...
- ELK学习实验009:安装kibana的仪表盘
一 metricbeat仪表盘 1.1 安装metricbeat仪表盘 可以将metricbeat数据在kibana中展示 [root@node4 ~]# cd /usr/local/metricbe ...
- 中小型企业级 IPS 部署
<构建基于Snort+Guardian+Iptables的IPS> 2020年的第三天,依旧如往常写文章,分享最近做的项目继<中小型企业级防火墙部署>之后的另一部分<构建 ...
- Atlas 读写分离
1.前置条件 需要配置好mysql 主从 主库:192.168.28.137:16205 从库:192.168.28.135:16205 Atlas:192.168.28.139 2.Atlas 部署 ...
- 「CodeForces 546B」Soldier and Badges 解题报告
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...
- .NET Core将促使.NET进一步衰落
我是十几年的.NET开发者,对.NET的历史发展比较了解,算是非常资深的了. 微软一向喜欢把开发者带到自己铺设的死路上,等开发者走到死路尽头的时候,会潇洒地再次铺设一条死路. .NET Core优势是 ...
- nginx错误: [error] OpenEvent("Global\ngx_reload_10444") failed (2: The system cannot find the file specified)
执行nginx -s reload命令: nginx: [error] OpenEvent("Global\ngx_reload_10444") failed (2: The sy ...
- cassandra中的ACID,与RDBMS中的事务有何不同?
Cassandra中的ACID标准 Apache Cassandra不遵循具有回滚或锁定机制的ACID(原子性,一致性,隔离性,持久性)事务,而是提供原子,隔离和持久的事务,并具有最终和可调的一致性, ...