字符编码 + python2和python3的编码区别(day08整理)
目录
昨日回顾
二十三、元组内置方法
不可更改的列表,其他的和列表一摸一样
二十四、散列表
二十五、字典内置方法
乱序
python2中字典是乱序的,但是python3做了优化
(本来是乱序的,但是在c这个层面做了不不乱序的优化)
key为什么是不可变的
假设是可变的,在哈希处理时,除留余数法会导致存储的位置发生变化
二十六、集合内置方法
- 去重
- 乱序(差值是按照某种哈希算法随机插的)
- 交集&/并集|/差集-/补集^
二十七、深浅拷贝
拷贝
a是b的拷贝对象,则b内部所有的数据类型变化,则a也变化
浅拷贝
a是b的浅拷贝对象,b内部的可变数据类型变化,a变化;b内部的不可变数据类型变化,a不变化
深拷贝
a为b的深拷贝对象,a内部无论何数据类型变化,b都不改变
今日内容
二十八、字符编码
1.文本编辑器存储信息的过程
unicode编码(识别所有代码)
因为unicode存储占用空间,所以用utf8来存储
utf8只和unicode对应识别
内存中unicode取,存用utf8存(硬盘),全世界的人写代码都是用utf8
内存中为什么不用utf8?
utf8和其他编码都没有转换关系,因此都要用unicode
未来迟早有一天,内存要用utf8
2.gb2312和gbk的区别
gb2312:一些常用词,不包括繁体字
gbk:所有的字
用什么编码写,就用什么编码读
如果写用utf8,存用gbk,会导致在存储的时候就会乱码
如果写用utf8,存用utf8,但是读用gbk,也会乱码
3.编码和解码
编码:内存中unicode编码,从内存到硬盘utf8
解码:Unicode从硬盘到内存
现在内存只有unicode编码
4.python解释器解释python代码的流程
读入python代码(字符编码)
python2默认是ascill,python默认是utf8
可以使用coding规定解决
# coding:gbk # 告诉python解释器用gbk去完成第一步,读入字符 中文
识别代码 (语法识别)
终端产生结果(字符编码)
终端是什么编码,就按照什么编码来
windows终端是utf8
二十九、python2和python3的编码区别
python2
python2有两种存储变量的形式:Unicode和按照coding头
假设python2用utf8存储中文,当你打印时,终端接受gbk的变量,但是windows终端编码时utf8,就会乱码
假设python2用unicode存储,因为unicode可以和任何的编码转换,所以此时终端编码是什么就不重要了, 不会乱码
# coding:gbk lt1 = '中文' # utf存储的 # lt1 = ['中文'] # []让他不用终端的编码转化,显示01010101001 print lt1 # ['\xe4\xb8\xad\xe6\x96\x87'] lt2 = u'中文' # u'中文'让他变成unicode # 早期用python2定义中文,必须得加上u,让他变成unicode存储 # lt2 = [u'中文'] print lt2 # '中文'
python3
python3只有一种存储变量的形式:unicode
因此,windows终端编码无论是什么都不会乱码,算是一种优化
最新文章
- 常用的CSS定位,XPath定位和JPath定位
- 开发Yii2过滤器并通过behaviors()行为调用
- PHP Socket实现websocket(四)Select函数
- Verilog之基本算数运算
- codeforces 258div2 A Game With Sticks(DP)
- 计蒜客 X的平方根
- I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
- tornado 使用过程中提示‘no module name ioloop’
- poj 1556 zoj1721 BellmanFord 最短路+推断直线相交
- Handler线程间通信
- 请给你的短信验证码接口加上SSL双向验证
- BZOJ3252攻略——长链剖分+贪心
- Docker Compose(八)
- Forward团队-爬虫豆瓣top250项目-模块开发过程
- 4.App测试与Web测试的不同
- PHP curl get post通用类
- 【原】spring redis 缓存注解使用
- sso单点登录系统原理与实现
- java Socket通信使用BufferedReader和BufferedWriter的注意事项
- nginx 支持ie 6 等低版本https 的配置
热门文章
- selenium-04-验证码问题
- 学习Python基础的整体概要
- RMAN备份归档日志ORA-19575
- [scrapy-redis] install and configure scrapy-redis on CentOS 7 (1)
- Java-Thread01之创建线程
- e课表项目第二次冲刺周期第七天
- Maven插件构建Docker镜像
- asp.net core 3.0 中使用 swagger
- Spring Security 动态url权限控制(三)
- eclipse中的项目运行时不出现run as→java application选项