0X00 Python2
Python2 默认的编码是ASCII 但是由于不能显示中文所以我们一般会使用UTF-8
在py文件头加上:
# -*- coding: UTF-8 -*-
这样默认是以UTF-8来编码的,但是最好是以unicode来处理字符串,最后在转换成自己需要的编码格式
比如:
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root',
db='servicetb', charset='utf8')
意思是以utf8的编码格式去解码从数据库中取出的数据,得到的数据是unicode而不是utf-8编码的数据
而自己声明的字符串则是UTF-8编码,如果字符串中是英文和数字也没关系,但如果还有中文,在进行字符串拼接时就会报错,解决方法:将字符串解码成unicode, your_string.decode('utf-8')
结论:对于存在中文、特殊字符的情况最好全部以unicode形式来处理,最后再统一转换编码返回值
0X02 Python3
关于编码,有几个层面:
1.Linux默认编码:utf-8
2.Python3字符串:unicode
3.Python3读写文件,在不指定encode和decode的情况下,默认为编码解码为utf-8。其中写文件时需要编码,将unicode编码为utf-8,读文件时需要解码,将utf-8解码为unicode