TypeError:当显式指定编码时,不支持解码str

时间:2018-02-01 17:36:39

标签: python python-3.x

明确指定编码时,知道为什么会发生这种情况吗?

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()

1 个答案:

答案 0 :(得分:2)

这里的帮助非常明确:

  

str(object='') -> str

     

str(bytes_or_buffer[, encoding[, errors]]) -> str

     

从给定对象创建一个新的字符串对象。如果编码或   指定了错误,然后该对象必须公开数据缓冲区   将使用给定的编码和错误处理程序进行解码。   否则,返回object的结果。 str ()(如果已定义)   或者repr(对象)。   encoding默认为sys.getdefaultencoding()。   错误默认为'严格'。

您只能为字节(b '')指定编码,而不能为''等字符串指定编码。