免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3494 | 回复: 2
打印 上一主题 下一主题

chardet误码,咋办? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-20 17:56 |只看该作者 |倒序浏览
本帖最后由 whitefirer 于 2010-12-20 17:59 编辑


纠结了,utf8是用chardet全文对比出来的结果,但是效率低,
下面的gb2312是只对title进行判断的结果(偶尔会误码。。)
而我要对本地文件(各种编码都有可能,跟charset里的不一定相同),进行扫描,提取titil,如果编码出错的话,提取的title就是甚至挂掉

所以,现在纠结的就是有没有个折中的方案呢?。。

论坛徽章:
0
2 [报告]
发表于 2010-12-20 18:17 |只看该作者
一共有多少中编码阿?
chardet确实经常猜错,频率非常高。
如果不多,就用try 然后直接decode 捕获错误后,再try

论坛徽章:
0
3 [报告]
发表于 2010-12-20 20:25 |只看该作者
回复 2# rockyaow


    我已经自己解决了,不过还是谢谢你~~。嗯,就是用的try,下面是代码:
  1. g_code_type = ['utf8', 'utf8', 'gb18030', 'gb2312', 'gbk', 'ISO-8859-2']       
  2.                                                                                                 #第一个是用来覆盖的,其它可以修改
  3.                 temp = title[0]
  4.                 for i in range(0, len(g_code_type) - 1):
  5.                         try:
  6.                                 temp = title[0].decode(g_code_type[i])
  7.                                 temp = temp.encode(codetype)
  8.                                 break
  9.                         except:
  10.                                 continue
  11.                 title[0] = temp
  12.                 print title[0].decode(codetype).encode('GB18030')
  13.                                                                                                 #这里只是为了屏幕上显示的不是乱码,如果想提高效率,可以删除
复制代码
讨厌网页这么多编码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP