代码改变世界

编码

2018-07-10 17:44  冻奶香甜玉米片  阅读(295)  评论(0)    收藏  举报

UTF是为unicode 编码设计的一种 在传输 和 存储 时节省空间的编码方案

#coding:utf-8

# -*- coding:utf-8 -*-

python3中读文件的默认编码是utf-8

python执行文件,先把文本进行语法分析,之后加载到内存时使用的是unicode编码,因为python3把字符串以utf-8读到内存时,同时把字符串转换为unicode编码

在python2中 unicode也是一种数据类型

 

 

在python2中

#coding:utf-8

s="路飞"

s是使用utf-8字符编码的

可以用s.decode(utf-8)转化为unicode,括号里面要填原字符编码,然后转化成unicode,该函数统一转为unicode

s2=s.decode(utf-8)

encode()可以把unicode的字符编码转为其他字符编码

s2.encode(gbk)

则转为GBK字符编码,可以在windows里使用

 

总结:

在py3中 默认文件编码是utf-8,默认字符串编码是unicode(在内存中自动转换为unicode),即使文件头声明了其他编码,字符串编码也不会变

在py2中 默认文件编码是 ascii编码,默认字符串编码是ascii,如果文件头声明了其他编码,则字符串编码也会跟着改变

(估计文件头声明编码的作用是让解释器选择用什么编码去解释,不单在字符串上)

 

py2中

内存里的表示方法:bytes类型

对字符串而言,字符串和bytes类型就是一回事,只是中间多了一种对照转换(其实显示出来的东西能不能都这么认为:中间多了一种规定转换,如照片视频由像素组成,像素对照颜色转换?)

但是在py3中,str就是unicode格式的字符串,bytes就是单纯的二进制

 

s=对象名.decode("utf-8") 或 s=u"路飞"

直接把字符串变成unicode

 

据说整体代码都转换成unicode,不单指字符串,61课,17:08分,alex said

 

py2有unicode这个类型

py3没有unicode这个类型

py2中 print encode后的GBK会直接显示汉子

而py3中,只会输出二进制

等于在py3中,只能通过unicode看到字型,其他编码只会按bytes展示

(编码后是为了储存和传输)

 

定义的文件头是告诉python解释器用什么编码读文件

 

62课 15:28 文件内容的编码是什么意思