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中用format函数格式化字符串的用法
Apr 08 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
Python实现约瑟夫环问题的方法
May 03 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
对命令行模式与python交互模式介绍
May 12 Python
python实现一组典型数据格式转换
Dec 15 Python
python3实现逐字输出的方法
Jan 23 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
flash用php连接数据库的代码
2011/04/21 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
浅谈javascript 面向对象编程
2009/10/28 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
Python实现的tab文件操作类分享
2014/11/20 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Python实现端口检测的方法
2018/07/24 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
python读取Kafka实例
2019/12/23 Python
汽车转让协议书
2015/01/29 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers
带你了解Java中的ForkJoin
2022/04/28 Java/Android