知道在显式指定编码时为什么会发生这种情况吗?
In [23]: import sys
In [24]: sys.getdefaultencoding()
Out[24]: 'utf-8'
In [25]: str(b'', encoding='utf-8') == ''
Out[25]: True
In [26]: str('') == ''
Out[26]: True
In [27]: str('', encoding='utf-8') == ''
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-e187972042f8> in <module>()
----> 1 str('', encoding='utf-8') == ''
TypeError: decoding str is not supported
根据str
的文档
默认编码为sys.getdefaultencoding()
发布于 2018-02-01 17:47:05
这里的帮助是非常清楚的:
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
从给定对象创建一个新的字符串对象。如果指定了编码或错误,则对象必须公开将使用给定编码和错误处理程序解码的数据缓冲区。否则,返回object.str() (如果定义的话)或repr(对象)的结果。编码默认为sys.getdefaultencoding()。错误默认为“严格”。
您可以只为字节(b''
)指定编码,而不能为字符串(如''
)指定编码。
https://stackoverflow.com/questions/48568654
复制相似问题