Python编码问题

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值