明确指定编码时,知道为什么会发生这种情况吗?
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()
答案 0 :(得分:2)
这里的帮助非常明确:
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
从给定对象创建一个新的字符串对象。如果编码或 指定了错误,然后该对象必须公开数据缓冲区 将使用给定的编码和错误处理程序进行解码。 否则,返回object的结果。 str ()(如果已定义) 或者repr(对象)。 encoding默认为sys.getdefaultencoding()。 错误默认为'严格'。
您只能为字节(b ''
)指定编码,而不能为''
等字符串指定编码。