美文网首页
第二节-初识python和字符编码

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

作者: 子非初心 | 来源:发表于2018-07-10 11:29 被阅读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,(解码的过程解释器会自动完成)

    相关文章

      网友评论

          本文标题:第二节-初识python和字符编码

          本文链接:https://www.haomeiwen.com/subject/krjfpftx.html