第二节-初识python和字符编码

2018-07-10  本文已影响20人  子非初心

内容编码

字符编码的发展

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就必须加才能识别中文

编码和解码

编码和解码流程图

image

utf-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,(解码的过程解释器会自动完成)

上一篇 下一篇

猜你喜欢

热点阅读