zoukankan      html  css  js  c++  java
  • 统一采用一种编码形式

    统一采用一种编码形式

      在编写Python程序的时候,一定要把编码和解码的操作放在外界来做。程序的核心部分应该使用Unicode字符类型,而且不要对字符的编码做任何设置。我们希望让用户无论输入的是str还是bytes类型,都保证返回统一的字符编码形式。

      这样做既可以令程序接收多种类型的文本编码,又可以保证输出的文本信息只采用一种编码形式,通过外界保证了编码的统一。

    由于字符串类型有分别,所以Python代码中常常会出现两种常见的使用场景:    

    1.开发者需要原始的8位bit值,这些8位bit值表示的是以UTF-8格式(或其他编码形式)来编码的字符。

    2.开发者需要操作没有特定编码形式的Unicode字符。

      一 在Python3中,我们需要编写接收 str 或 bytes,并总是返回str的方法:

    # 输入str或bytes都统一返回str
    def to_str(str_or_bytes):
        if isinstance(str_or_bytes, bytes):
    
            # 如果是bytes,解码成str
            value = str_or_bytes.decode('utf-8')
    
        else:
            value = str_or_bytes
    
        return value
    
    res = to_str(b'jason like shenghao!')
    print(type(res))
    
    >>> <class 'str'>

      总返回bytes的方法

    # 输入str或bytes都统一返回bytes
    def to_bytes(str_or_bytes):
        if isinstance(str_or_bytes, str):
    
            # 如果是str,编码成bytes
            value = str_or_bytes.encode('utf-8')
    
        else:
            value = str_or_bytes
    
        return value
    
    res = to_bytes('jason 喜欢吃生蚝')
    print(res)
    print(type(res))
    
    >>> b'jason xe5x96x9cxe6xacxa2xe5x90x83xe7x94x9fxe8x9ax9d'
    >>> <class 'bytes'>

    二 在Python2中,我们需要编写接收 str 或 Unicode,并总是返回Unicode的方法:

    '''
    python2中
    '''
    # 输入str或unicode都统一返回unicode
    def to_unicode(str_or_unicode):
        if isinstance(str_or_unicode, str):
    
            # 如果是unicode,编码成str
            value = str_or_unicode.encode('utf-8')
    
        else:
            value = str_or_unicode
    
        return value

     总返回str

    # 输入str或unicode都统一返回str
    def to_str(str_or_unicode):
        if isinstance(str_or_unicode, unicode):
    
            # 如果是bytes,解码成str
            value = str_or_unicode.decode('utf-8')
    
        else:
            value = str_or_unicode
    
        return value

    总结: 对输入的数据进行操作之前,使用外界的辅助函数来保证字符序列的类型与开发者期望的相符合。

  • 相关阅读:
    HTML5中video的使用一
    sql存储过程的简单使用
    Linq to Sqlite连接
    linq to sql简单使用
    练习笔记:net,JqueryUI实现自动补全功能
    三个师妹之出题
    Docker——questions
    Docker——网络
    Docker——dockerfile
    Docker——容器数据卷
  • 原文地址:https://www.cnblogs.com/kermitjam/p/11162116.html
Copyright © 2011-2022 走看看