参考园子里的一篇博文Python信息抽取之乱码解决:
OK,我采取了unicode方法,先对这个字段进行解码,在进行编码 if chardet.detect(name)['encoding'] == 'GB2312': name = unicode(name,'GB2312','ignore').encode('utf-8','ignore') elif chardet.detect(name)['encoding'] == 'Big5': name = unicode(name,'Big5','ignore').encode('utf-8','ignore') elif chardet.detect(name)['encoding'] == 'ascii': name = unicode(name,'ascii','ignore').encode('utf-8','ignore') elif chardet.detect(name)['encoding'] == 'GBK': name = unicode(name,'GBK','ignore').encode('utf-8','ignore') elif chardet.detect(name)['encoding'] == 'EUC-JP': name = unicode(name,'EUC-JP','ignore').encode('utf-8','ignore') else: name = '未知'
没用,还是一样。detect识别的时候就出错了
字符集探测没有可靠的方案的,字符集设计的时候就没有考虑过这个。IE及Chrome等浏览器都有字符集探测功能,但是仍然会遇到乱码情况。
涉及到字节反编码为字符串的地方多多少少都需要加上手动指定字符集作为辅助方案的。