python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object相关的知识,希望对你有一定的参考价值。

py3里,字符串,str类型,是unicode编码格式。其他类型都是byte,编码格式是gbk,utf-8等

而chardet是检查byte类型的编码格式的,不是检查str类型的编码格式的。

a="abc啊”,是字符串,就不能用chardet了。

当获取的数据(byte)类型,需要当成字符串来处理,需要先将其编码成unicode(python处理的都是此编码)。

而要将bytes转换成unicode,需要先知道bytes具体是什么编码格式如gbk,然后使用aa=decode("gbk"),aa为unicode的该数据内容。

如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),
这时候,你就需要chardet 来测试它们的编码。

以上是关于python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object的主要内容,如果未能解决你的问题,请参考以下文章

Python3.6.2安装pip install paramike模块报错

python3.6安装scrapy报错

关于Python3.6中Twisted模块安装的问题

使用chardet模块判断网页编码

没有名为“chardet”的模块

使用chardet模块获取文件的编码格式,进而正确的读取文件内容