统一采用一种编码形式

编写Python程序时,应将编码和解码操作放外界,核心用Unicode字符类型且不设置字符编码。代码常见两种场景,一是处理UTF - 8等编码字符,二是操作Unicode字符。Python3和Python2需编写不同返回类型的方法,操作前用辅助函数保证字符序列类型符合期望。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统一采用一种编码形式

  在编写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

  总返回bytes的方法

# 输入str或bytes都统一返回bytes
def to_bytes(str_or_bytes):
    if isinstance(str_or_bytes, str):

        # 如果是bytes,解码成str
        value = str_or_bytes.encode('utf-8')

    else:
        value = str_or_bytes

    return value

 

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

'''
python2中
'''
# 输入str或unicode都统一返回str
def to_str(str_or_bytes):
    if isinstance(str_or_bytes, unicode):

        # 如果是bytes,解码成str
        value = str_or_bytes.encode('utf-8')

    else:
        value = str_or_bytes

    return value

 总返回str

# 输入str或unicode都统一返回unicode
def to_unicode(str_or_bytes):
    if isinstance(str_or_bytes, str):

        # 如果是bytes,解码成str
        value = str_or_bytes.decode('utf-8')

    else:
        value = str_or_bytes

    return value

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值