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中subprocess模块用法实例详解
May 20 Python
Python中的sort()方法使用基础教程
Jan 08 Python
Python、PyCharm安装及使用方法(Mac版)详解
Apr 28 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
python用for循环求和的方法总结
Jul 08 Python
python实现各种插值法(数值分析)
Jul 30 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
PyTorch 导数应用的使用教程
Aug 31 Python
基于 Python 实践感知器分类算法
Jan 07 Python
python超详细实现完整学生成绩管理系统
Mar 17 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
jQuery 名称冲突的解决方法
2011/04/08 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
python str与repr的区别
2013/03/23 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
J2EE相关知识面试题
2013/08/26 面试题
终止合同协议书
2014/04/17 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
工作时间证明
2015/06/15 职场文书
公司员工奖惩制度
2015/08/04 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Redis分布式锁Redlock的实现
2021/08/07 Redis
JavaScript原型链详解
2021/11/07 Javascript
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js