美文网首页
python 编码个人理解总结

python 编码个人理解总结

作者: 风铃_2a53 | 来源:发表于2018-08-30 14:31 被阅读0次

            一直在用python2.7对其编码问题一直傻傻分不清,每次遇到问题都是百度,问题解决了,但是不总结,每次都需要百度,如死循环一般,今天痛下决心,搞清楚概念,大话聊聊,python编码的问题  

            百度了很多概念,首先是要从python编码和计算机内存编码说起。。。。。

    一、python2,python3,计算机操作系统的默认编码

    1.python2 默认编码的是ASCII ,ASCII编码是:大小写英文字母、数字和一些符号

    2.python3 默认编码是utf-8, utf 是unicode 编码设计的一种存储和传输时候节省空间的编码方案(还有utf-16)

    3.计算机内存默认编码是万国码 unicode  ,unicode 相当与编码界的大Boss啦,包含了全世界所有的语言

    二、编辑器和内存的关系

    1.打开编辑器,相当于开启一个进程,进程是在内存中执行的,保存写入的编辑器的内容,相当于从内存保存到硬盘的过程

    2.再次打开已经保存的硬盘中的py文件,就是从硬盘读入内存,在内存中解释执行py文件

    三、字符编码

    经过一个过程:

      字符--------(翻译过程)------->数字

      这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。

    四、字符编码的使用

    因为python2 中不能自动的把文件编码转化为unicode存在内存中,所以需要decode 解码和encode编码

    utf-8  ———————>decode(解码)—————————>unicode

    unicode————————>encode(编码)————————>GBK/utf-8

    执行结果是这样的:

    1.utf-8转GBK打印乱码了,utf-8 不能直接转化为gbk ,首先是先将utf-8转化为unicode,在用 unicode 转为gbk

    2.如果服务端encode的编码格式是utf-8, 客户端内存中收到的也是utf-8编码的二进制

    四、终端编码问题

    windows 是gbk,文件为utf-8打印就会有乱码问题,需要将utf-8转化成unicode再转为gbk

    "测试".decode('utf-8').encode('gbk'),才能打印出测试

    mac的终端编码是GB2313,unicode ,utf-8等,可以设置很多所以无论打印gbk还是utf-8,还是unicode都不会乱码

    #coding=utf-8

    s="测试"

    print s

    print type(s)

    print repr(s)

    t=s.decode('utf-8').encode('gbk')

    y=s.decode('gbk')

    h=s.decode('utf-8').encode('utf-8')

    r=s.decode('utf-8')

    print t ,y, h,r

    print type(t),type(y),type(h),type(r)

    print repr('\xe6\xb5\x8b\xe8\xaf\x95'.decode('utf-8'))

    print u'\u6d4b\u8bd5'.encode('gb2312')

    运行结果

    娴嬭瘯

    '\xe6\xb5\x8b\xe8\xaf\x95'

    测试 濞村鐦?娴嬭瘯 娴嬭瘯

    u'\u6d4b\u8bd5'

    测试

    相关文章

      网友评论

          本文标题:python 编码个人理解总结

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