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中的Django框架中进行字符串翻译
Jul 27 Python
Python 转义字符详细介绍
Mar 21 Python
django的登录注册系统的示例代码
May 14 Python
TensorFlow实现卷积神经网络
May 24 Python
Python提取频域特征知识点浅析
Mar 04 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python TestCase中的断言方法介绍
May 02 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Python 实现RSA加解密文本文件
Dec 30 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 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创建自定义菜单的方法
2016/08/01 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
Vue中使用sass实现换肤功能
2018/09/07 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
python为tornado添加recaptcha验证码功能
2014/02/26 Python
python常见的格式化输出小结
2016/12/15 Python
python如何查看微信消息撤回
2018/11/27 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
中学家长会邀请函
2014/02/03 职场文书
全神贯注教学反思
2014/02/03 职场文书
村干部承诺书
2014/03/28 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
班级文化建设标语
2014/06/23 职场文书
重阳节慰问信
2015/02/15 职场文书
签证工作证明模板
2015/06/15 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书