【小小伎俩】消杀Python解码时的UnicodeEncodeError

最近开始啃PyQt。

这货的实用价值大,值得费些劲鼓捣、折腾。

入门的导盲书很多,上手较快。缺少的是,技术含量高的文档资料。

网上很多东西是比着Qt的葫芦画瓢。

想看看先行者们的经验教训,满世界寻摸,没找到论坛,只找着一个邮件列表。

千辛万苦弄回来一堆zip文档,不想手工拆解,写个script去拆包,却遇上了麻烦。

邮件列表的文档,会有多种自然语言的编码,有时会出现解码错误:UnicodeEncodeError。

解码问题,是Python的老大难。我现在用的3.4.1,也没真正解决它。

折腾半天,自造一个办法。直接用代码说话:

from gzip import GzipFile

def special():
    z = GzipFile('./mails/2014-August.txt.gz', 'r')
    f = open('./0001.txt','w')
    l = z.readlines()
    for b in l:
        try:
            s = b.decode('gbk')
        except:
            s = utf8(b)
        finally:
            s = str(b)
        try:
            f.write(s)
        except:
            continue
    f.close()

#---------------------------------------------------
def utf8(b):
    try:
        s = b.decode('utf-8')
        return s
    except :
        return str(b)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值