解码和unicode之间的区别?

 蓝色水气球_453 发布于 2023-02-09 14:49

根据这个测试:

# -*- coding: utf-8 -*-

ENCODING = 'utf-8'

# what is the difference between decode and unicode?
test_cases = [
    'aaaaa',
    'ááááá',
    '?????',
]
FORMAT = '%-10s %5d %-10s %-10s %5d %-10s %10s'
for text in test_cases :
    decoded = text.decode(ENCODING)
    unicoded = unicode(text, ENCODING)
    equal = decoded == unicoded
    print FORMAT % (decoded, len(decoded), type(decoded), unicoded, len(unicoded), type(unicoded), equal)

.decode()和之间没有区别unicode():

aaaaa          5  aaaaa          5        True
ááááá          5  ááááá          5        True
?????          5  ?????          5        True

我对吗?如果是这样,为什么我们有两种不同的方法来完成同样的事情?我应该使用哪一个?有什么微妙的区别吗?

1 个回答
  • 比较两个函数(此处和此处)的文档,两种方法之间的差异似乎确实很小.该unicode功能记录为

    如果给出了编码和/或错误,unicode()将使用编解码器解码对象,该对象可以是8位字符串或字符缓冲区.encoding参数是一个给出编码名称的字符串; 如果编码未知,则引发LookupError.错误处理是根据错误完成的; 这指定了对输入编码中无效的字符的处理.如果错误是'严格'(默认值),则会在错误时引发ValueError,...

    string.decode国家的描述

    使用为编码注册的编解码器对字符串进行解码.encoding默认为默认字符串编码.可以给出错误以设置不同的错误处理方案.默认值为'strict',表示编码错误会引发UnicodeError....

    因此,唯一的区别似乎unicode也适用于字符缓冲区,并且无效输入返回的错误不同(ValueError相对UnicodeError).另一个微小的区别在于向后兼容性:unicode记录为"版本2.0中的新功能",而string.decode"版本2.2中的新功能".

    鉴于上述情况,使用哪种方法似乎完全是品味问题.

    2023-02-09 14:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有