美文网首页
遇到的问题

遇到的问题

作者: 时光不说话 | 来源:发表于2017-12-06 15:02 被阅读0次

    【报错】变量 is not callable

    当出现报错 XXX is not callable的时候,很有可能是你正在调用一个不能被调用的变量或对象,具体表现就是你调用函数、变量的方式错误。

    【场景】获取到网页内容后,中文不能正常显示

    web信息中常会遇到“\u4f60\u597d”类型的字符。首先’\u‘开头就基本表明是跟unicode编码相关的,“\u”后的16进制字符串是相应汉字的utf-16编码。

    python里decode()和encode()为我们提供了解码和编码的方法。其中decode('unicode_escape')能将此种字符串解码为unicode字符串。
    1、处理字符串中的字符

    str1 = '\u4f60\u597d'  
    print str1.decode('unicode_escape')  
    你好  
    

    2、处理dict中的字符

    只有str对象才能调用decode方法,tuple/list/dict调用decode会报错,'dict' object has no attribute 'decode'
    可以调用json模块的dumps方法,将dict中的unicode打印成中文。

    import json
    
    a = {u'content': {u'address_detail': {u'province': u'\u5409\u6797\u7701', u'city': u'\u957f\u6625\u5e02', u'street_number': u'', u'district': u'', u'street': u'', u'city_code': 53}, u'point': {u'y': u'43.89833761', u'x': u'125.31364243'}, u'address': u'\u5409\u6797\u7701\u957f\u6625\u5e02'}, u'status': 0, u'address': u'CN|\u5409\u6797|\u957f\u6625|None|CERNET|0|0'}
    
    
    print json.dumps(a).decode('unicode-escape')
    
    
    输出:
    {"content": {"address_detail": {"province": "吉林省", "city": "长春市", "street_number": "", "district": "", "street": "", "city_code": 53}, "address": "吉林省长春市", "point": {"y": "43.89833761", "x": "125.31364243"}}, "status": 0, "address": "CN|吉林|长春|None|CERNET|0|0"}
    

    【扩展】gbk和utf8的区别

    GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。

    UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码。

    UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,对于网站打开速度而言,也是有一定影响的。

    GBK编码格式,它的功能少,仅限于中文字符,当然它所占用的空间大小会随着它的功能而减少,打开网页的速度比较快。

    【报错】怎么解决python "Non-ASCII character"错误

    代码中出现汉字,导致使用时报SyntaxError: Non-ASCII character '\xe9'
    解决方法:源代码文件第一行添加:#coding:utf-8

    【报错】python 编码问题:'ascii' codec can't encode characters in position 的解决方案

    import sys  
    reload(sys)  
    sys.setdefaultencoding('utf8')   

    相关文章

      网友评论

          本文标题:遇到的问题

          本文链接:https://www.haomeiwen.com/subject/fttlixtx.html