python2字符编码问题

2020-06-09  本文已影响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,真香

上一篇下一篇

猜你喜欢

热点阅读