Python2和3字符编码的区别知识点整理


Posted in Python onAugust 08, 2019

python解释器运行代码的流程启动python解释器(相当于文本编辑器)打开文件,显示这个字符并检查语法(涉及字符编码, a=1只是一个很普通的字符)解释字符 (涉及字符编码,再去内存空间 生成一个a=1的变量)

python2用的是ascii, python3默认是utf8读取字符

# coding:gbk会告诉python3解释器用gbk编码读取字符

python3(了解)

你看到的其实是unicode

但是终端帮你把这个unicode的0和1做一个转换,从unicode转换成了终端能够识别的编码格式,然后变成中文

# coding:gbk
a = '中文' # 用unicode编码存储了这堆0和1
print(a) # 010101010

假设终端的默认编码是gbk , 认识 unicode编码的变量

假设终端的默认编码是utf8,认识 unicode编码的变量

Python2(了解)

unicode + 指定的coding编码(str类型)

# coding:gbk
a = '中文' # 用gbk编码存储了这堆0和1
a = u'中文' # 用unicode编码存储了这堆0和1
print(a)

终端是一个文本编辑器,会有默认编码.

假设终端的默认编码是gbk , 认识 gbk编码的变量

假设终端的默认编码是utf8, 不认识 gbk编码的变量
Python2和3字符编码的区别知识点整理

总结

代码详情 Python2执行情况 Python3执行情况

代码详情 Python2执行情况 Python3执行情况
# coding:gbk print('中') 终端:utf8 乱码 不乱码
# coding:utf8 print('中') 终端:utf8 不乱码 不乱码
# coding:gbk print(u'中') 终端:utf8 不乱码 不乱码
# coding:utf8 print(u'中') 终端:utf8 不乱码 不乱码

不乱码不乱码

在Python2中如果指定了字符编码,那么内存存取就会按照指定的字符编码去入内存。解释或去执行时就要按照指定了的字符编码去解释,否则就会乱码。 否则可以在定义变量前面加上u,这样变量就会以unicode编码存入内存。

如:

#coding:gbkname = "爸爸"

 

但在Python3中就不会有这样的问题,因为无论你指定了什么字符编码,在内存存取时都会使用Unicode编码去入内存Unicode编码可以和任意的字符编码相互转换,并在读取时按照所需的编码区读取,这样就很好解决了字符编码的问题

以上就是相关的全部内容知识点,感谢大家对三水点靠木的支持。

Python 相关文章推荐
Python中的异常处理简明介绍
Apr 13 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
python3中property使用方法详解
Apr 23 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Python urllib2运行过程原理解析
Jun 04 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
Python调用JavaScript代码的方法
Oct 27 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
Python编程中类与类的关系详解
Aug 08 #Python
python os.fork() 循环输出方法
Aug 08 #Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 #Python
在Python中os.fork()产生子进程的例子
Aug 08 #Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 #Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 #Python
python批量修改ssh密码的实现
Aug 08 #Python
You might like
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
举例讲解Python装饰器
2020/12/24 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
幼儿园秋游感想
2014/03/12 职场文书
庆元旦演讲稿
2014/09/15 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers
索尼ICF-36收音机评测
2022/04/30 无线电