扫码关注官方订阅号
一直被编码问题所困惑,在网上搜索了“如何查看字符编码类型?”,听说chardet模块很方便,但是安装了chardet模块之后,使用一直报错“ValueError: Expected a bytes object, not a unicode object”,不知道什么原因。如下图所示:
ringa_lee
你的 a 已经是字符了,就不需要再测试编码了。chardet 是用来测试 bytes 的编码格式的。
py3里,只有 unicode编码格式 的字节串才能叫作str。其他编码格式的统统都叫bytes,如:gbk,utf-8,gb2312…………
字节串
str
bytes
gbk
utf-8
gb2312
这些bytes要转换为 unicode编码 才能当作str来用,就需要知道 bytes 的编码格式。如果你事先知道,比如gbk,就可以用 bytes.decode('gbk')将bytes解码为unicode字符。如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),这时候,你就需要chardet 来测试它们的编码。
bytes.decode('gbk')
chardet
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你的 a 已经是字符了,就不需要再测试编码了。
chardet 是用来测试 bytes 的编码格式的。
py3里,只有 unicode编码格式 的
字节串才能叫作str。其他编码格式的统统都叫
bytes,如:gbk,utf-8,gb2312…………这些bytes要转换为 unicode编码 才能当作str来用,就需要知道 bytes 的编码格式。
如果你事先知道,比如
gbk,就可以用bytes.decode('gbk')将bytes解码为unicode字符。如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),
这时候,你就需要
chardet来测试它们的编码。