内容编码
字符编码的发展
ascii (只能识别英文)
8位 = 01010101 2**8(2的8次方)= 256 种组合就可以表示所有的英文,字符,数字
也就是1个字节就能表示所有的英文,字符,数字
但是不能表示其他国家语言如中文
万国码 unicode (包含任何国家语言)
最少用2个字节来表示:
1个字节 = 8位 = 01010101
2个字节 = 16位 = 0101010101010101 2个字节就是 2**16(2的16次方)= 65536 种组合
也就是说万国码最少也要用两个字节来表示
中文是用3个字节来表示的
3个字节 = 24位 = 010101010101010101010101 3个字节就是 2**24(2的24次方)= 16777216 种组合
utf-8
有了万国码后人们又发现,造成了运算空间的浪费,明明可以用1个字节表示的也用了2个字节来表示,后来就又发明了utf-8
utf-8 是在万国码的基础上进行了加工
也就是utf-8会自动根据地区语言来判断用多少位识别
英文:8位
欧洲:16位
中文:24位
...
所以我们在写Python文件是要是有中文汉字,就需要告诉解释器用什么编码
如:
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 print '你好 中国'
如果是Python3.5版本解释器,就可以不加编码,因为默认就是utf-8编码
也就是说,解释器默认是utf-8就可以不加,如果默认不是utf-8就必须加才能识别中文
编码和解码
编码和解码流程图
imageutf-8或者gbk等编码都是,由万国码编码而来的这个过程叫做(编码),将utf-8在还原成万国码这个过程叫做(解码)
在python中可以将某一段字符进行编码或者解码
decode() 函数 为解码 函数值:为要解码的编码(原本编码)
使用方法:要解码的字符串变量.decode(要解码的编码)
如:jiem = zifu.decode("utf-8")
encode() 函数 为编码 函数值:为要编的码(编码)
使用方法:要编码的解码变量.decode(要编的码)
举例:
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 zifu = "中文字符"
4 #解码,需要指定原来的是什么编码
5 jiem = zifu.decode("utf-8")
6 #编码,需要指定要使用什么编码
7 bianm = jiem.encode("gbk")
8 print(bianm)
image
注意:如果是python3.5或者以上版本,可以省略解码的环境,直接第二步重新编码就可以,也就是可以直接将utf-8直接编码成gbk,(解码的过程解释器会自动完成)
网友评论