zoukankan      html  css  js  c++  java
  • python小结(三) py-2与py-3的偏码真相&&几个调用模块的区别

    编码的不同

    0x01:

    python2.X

    1.python2默认的编码的格式是ASCII,所以通常在前面都会声明 coding:utf8

    2.按照python2的编码方式会以bytes字节的方式存储的你的硬盘中,而且python2会默认将bytes字节转化为unicode格式

     

    如图所示:

     

    python3.X

    1.python3默认的编码格式是utf8

    2.python3则将str与bytes的类型做了严格的区分,str就是unicode类型,也是最常用的类型,只有在需要bytes时才会转化为bytes类型

     

    如图所示:

     

    模块的区别

    0x02:

    1.input

    python2.X

    inp = raw_input('请输入:')

    python3.X

    input = input('请输入')

    2. json模块:

    python2.X

    data= {'name':'张三'}
    data = json.dumps(data,ensure_ascii=False)
    print data
    
    运行结果:
    
    {"name": "张三"}
    
    
    若没有添加ensure_ascii属性,则
    
    {"name": "u5f20u4e09"}

    python3.X

    data= {'name':'张三'}
    data = json.dumps(data)
    print(data)
    
    
    运行结果:
    data= {'name':'张三'}

    3.configparser

    python2.X

    import ConfigParser
    
    config.add_section('default')
    config.set('default','name','tom')
    
    
    with open('example', 'w') as f:
        config.write(f)

    python3.X

    import configparser
    config = configparser.ConfigParser()
    
    config['deault'] = {
        '':'',
        '':''
    }
    
    with open('example', 'w') as f:
        config.write(f)

    4.socket(以server端为例)

    python2.X

    发送send(),接受recv(),python2中可以是str或者bytes类型

    import socket
    import SocketServer
    
    class MyServer(SocketServer.BaseRequestHandler):
    
        def handle(self):
            print ("服务端启动...")
            while True:
                conn = self.request
                print (self.client_address)
                while True:
                    client_data=conn.recv(1024)
                    print (client_data)
                    print ("waiting...")
                    server_response = raw_input(">>>")
                    conn.sendall(server_response)
                conn.close()
    
    if __name__ == '__main__':
        server = SocketServer.ThreadingTCPServer(('127.0.0.1',8090),MyServer)
        server.serve_forever()

    python3.X

    只能接受bytes类型的数据

    import socketserver
    
    class MyServer(socketserver.BaseRequestHandler):
    
        def handle(self):
            print ("服务端启动...")
            while True:
                conn = self.request
                print (self.client_address)
                while True:
    
                    client_data=conn.recv(1024)
    
                    print (str(client_data,"utf8"))
                    print ("waiting...")
                    server_response=input(">>>")
                    conn.sendall(bytes(server_response,"utf8"))
                 
    
                conn.close()
              
    
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',8098),MyServer)
        server.serve_forever()

    5.cmd

    python2.X

    a)cm命令行默认的是gbk格式,当python2在命令行运行汉字会出现乱码或报错

    print u'张三'

    b)也可以修改cmd的默认格式

    1.      chcp 65001  (  将字符格式修改为utf8  )

    2.      chcp 936    (  将字符格式修改为默认的gbk)

    python3.X

    python3则没有这样的问题

     

    暂时想起来这么多,有的遇到了,查完也就忘了。如果以后遇到还会补充,也希望大神留言告知其他的方面

  • 相关阅读:
    ASP.NET 上传文件最大值调整
    Git撤销提交
    MVC模式下如何实现RegisterStartupScript等功能
    RESTful接口设计原则/最佳实践(学习笔记)
    如何编译MongoDB?
    【NTKO】一些常用操作
    【solr】使用-取反时注意,-是表示排除,不能单独做条件用
    【layui】日期范围分开两个input,开始日期选中时,结束日期的最小可选择就是开始日期
    【转】【Java】剪切板操作大全
    【转】彻底禁用Chrome的“请停用以开发者模式运行的扩展程序”提示
  • 原文地址:https://www.cnblogs.com/guo970910/p/10027382.html
Copyright © 2011-2022 走看看