【问题标题】:Why was the keyword argument 'encoding' removed from json.loads() in Python 3.9?为什么在 Python 3.9 中从 json.loads() 中删除了关键字参数“编码”?
【发布时间】:2021-05-07 22:49:26
【问题描述】:

json包状态的官方文档:

json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)¶

在 3.6 版中更改:s 现在可以是字节或字节数组类型。输入编码应为 UTF-8、UTF-16 或 UTF-32。

3.9 版更改:已删除关键字参数编码。

在 Python 3.9 之前,'encoding' 关键字的用途是什么?为什么删除了 encoding 关键字? json.loads() (3.9+) 是否能够自动检测来自 UTF-8、UTF-16 和 UTF-32 的字节和字节数组输入编码?

参考:https://docs.python.org/3/library/json.html

【问题讨论】:

标签: json python-3.x


【解决方案1】:

json.loads() (3.9+) 是否能够自动检测来自 UTF-8、UTF-16 和 UTF-32 的字节和字节数组输入编码?

是的——如果你查看 json 包 source code,json.loads() 会调用 detect_encoding(),它可以适当地检测输入编码。查看detect_encoding() here 的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2019-03-27
    • 2015-11-30
    • 1970-01-01
    • 2015-04-20
    • 2011-07-19
    • 2016-02-09
    相关资源
    最近更新 更多