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实现的几个常用排序算法实例
Jun 16 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
用Pygal绘制直方图代码示例
Dec 07 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
Python3多线程基础知识点
Feb 19 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
Python如何实现动态数组
Nov 02 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
python编程项目中线上问题排查与解决
Nov 01 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中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
初识Laravel
2014/10/30 PHP
PHP进程同步代码实例
2015/02/12 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python Django批量导入数据
2016/03/25 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python如何读写CSV文件
2020/08/13 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python GUI计算器的实现
2020/10/09 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
群众路线教师自我剖析材料
2014/09/29 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
岗位职责范本大全
2015/02/26 职场文书
庆七一主持词
2015/06/29 职场文书
python的变量和简单数字类型详解
2021/09/15 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
Python安装使用Scrapy框架
2022/04/12 Python