python通用编码_python2.7的编码的常见解决方案.md

python2.7中,str和unicode是不同的类型,给非ASCII编码的文字和符号的使用造成了极大的困难

str是字符序列

unicode是字节序列

遇到类似于 如下问题的解决方案

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)

0.必须的编码声明

想要在代码中涉及非ASCII编码的处理,必须在程序的最前面指定

#coding:utf-8

来指示python文件本身的编码为utf-8(或者其他编码)

1.通用解决方案

在主函数中加入

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

2.写入文件时不能编码的解决方案

由于python2中的builtin的open函数不能指定字符集,所以,str格式的字符串必须先进行编码才能写入文件,编码可根据需要指定

3.数据库中乱码的解决方案

首先要将数据库本身的编码调整为UTF-8

使用

SHOW VARIABLES LIKE "%char%";

查看数据库本身的编码

在连接数据库的时候就指定好,使用MysqlDb模块的时候,使用connet函数需指定charset='utf-8'

使用其他ORM或者数据库框架的时候也应在配置或者连接的函数中指定好字符集为UTF-8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值