美文网首页
python2字符编码问题

python2字符编码问题

作者: 许忠慧 | 来源:发表于2020-06-09 20:36 被阅读0次

    常用python2的人应该知道python2对于中文及其不友好。经常出现出现各种乱码的情况。这里记录下常见乱码的处理方式

    1.python脚本中不得使用任何中文,包含注释,处理方式
    脚本的第一行加入:

    #coding=utf-8
    或
    # -*- coding:utf-8 -*-
    

    2.python的默认编码格式是ascii,可以通过改变默认编码格式的方式使python支持输出中文

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    

    3.python追加写入文件的时候乱码,该文件是从linux中导出的,为了不影响其正常的使用,不得改变该文件的编码格式,处理方式:

    a = ' 你好'
    f = open('test.txt', 'a')
    f.write(a.decode(sys.stdin.encoding).encode('utf-8'))
    f.close()
    

    据说还有另外有另外一种处理方式(暂时没试过,下次出问题了再试):

    #先decode成UTF-16,再encode成UTF-8 
    jap=japtext.decode("SHIFT_JIS").encode("UTF-8") #不转成utf-8也可以 
    chn=chntext.decode("GB2312").encode("UTF-8")#编码方式大小写都行utf-8也一样
    

    4.对于字典和列表打印时候的中文乱码处理

    import json
     
    #打印字典
    dict = {'name': '张三'}
    print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)
    >>>{'name': '张三'}
     
    #打印列表
    list = [{'name': '张三'}]
    print json.dumps(list, encoding="UTF-8", ensure_ascii=False)
    >>>[{'name': '张三'}]
    

    5.终极大招(获取编码格式,使用的是三方库),通过获取到的编码格式然后再进行转码

    import chardet
    
    print chardet.detect(data)
    

    6.也是我现在正在使用的方式,放弃python2,使用python3,真香

    相关文章

      网友评论

          本文标题:python2字符编码问题

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