文档章节

python3编码之美

梁风羽
 梁风羽
发布于 2017/04/18 15:29
字数 531
阅读 2
收藏 1

 我在python2编码之殇一文的最后介绍过,想要解决python2中的编码问题,最直接有效的方法就是将所有外部的字符串转变为unicode格式,再在python内部了流转。python3正是在这方面做了很大的优化。
  python3中也有2种编码格式,分别为str与byte,这里的str相当于2中的unicode,byte相当于2中的str。再者python3将python源代码编码从ascii改成了utf-8,从外部接收的编码自动转化成了str(2中的unicode),大大减少产生编码异常的点,光说没用,我用实验证明。

 

系统以及源代码编码

3.x已经把源代码编码以及系统编码从ascii都变成了utf-8,避免了中文报错。

 

1

2

3

4

5

6

 

>>> import sys

>>> print(sys.getdefaultencoding())

utf-8

>>> print(sys.getfilesystemencoding())

utf-8

>>>

 

其次,我们可以看到我们定义的a为str(相当于2.x中unicode),而它在windows控制台输出时也没有因为编码问题而报错。

 

1

2

3

 

>>> a="你好"

>>>print(a)

你好

 

字符串编码

 

1

2

3

4

5

6

7

 

>>> a="你好"

>>> print(type(a))

<class 'str'>

>>> b=a.encode("utf-8")

>>> print(type(b))

<class 'bytes'>

>>>

我们可以看到,3.x中的str格式类似于2.x中的unicode,而2.x中的str相当于3.x中的bytes.

网页编码


结果:

返回的是bytes格式的,只要decode转化为str就ok了。

文件编码


结果:从文件中读取出来的是str(2.x中的unicode),因此不用转码。

传送门

Python2编码之殇
Python2编码之殇续集

转载请说明出处:Python3编码之美|nMask’Blog
本文地址:http://thief.one/2017/04/18/1/

© 著作权归作者所有

共有 人打赏支持
梁风羽
粉丝 0
博文 3
码字总数 5464
作品 0
杭州
程序员
私信 提问
软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
2018/10/23
0
0
【北京】PyConChina2016 - 2016/10/15

简约之美,Python当歌 ——PyConChina2016重新起航 开源编程语言Python近年来在互联网、游戏、云计算、大数据、运维、企业软件等领域有非常多的应用。 PyCon大会是Python语言社群全球性的盛会...

TopGeek
2016/09/02
334
0
【北京】PyConChina2016 - 2016/10/15

简约之美,Python当歌 ——PyConChina2016重新起航 开源编程语言Python近年来在互联网、游戏、云计算、大数据、运维、企业软件等领域有非常多的应用。 PyCon大会是Python语言社群全球性的盛会...

TopGeek
2016/09/02
0
0
python和java哈希值区分

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
2018/06/25
0
0
撤回的微信消息真的看不到?78行Python代码帮你看穿一切!

导读:Python曾经对我说:"时日不多,赶紧用Python"。于是看到了一个基于python的微信开源库:itchat,玩了一天,做了一个程序,把私聊撤回的信息可以收集起来并发送到个人微信的文件传输助手...

技术小能手
2018/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js数组遍历和对象遍历

数组遍历 for for(var i=0,len=arr.length;i<len;i++){console.log(arr[i]);} forEach - ES5语法,性能比for弱,不能使用break终止循环,不能使用return arr.forEach(function(item,inde......

祖达
31分钟前
2
0
Java网络编程

基本概念 网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。 一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户内存的过程是否需要...

春哥大魔王的博客
53分钟前
2
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
今天
2
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部