python mysql数据库 'latin-1' codec can't encode character错误问题解决

用Python编写写MySQL数据库程序的时候,出现如题错误。属于编码错误。

之前已经改过MySQL的/etc/my.cnf 文件(这个网上很多文章,不详述了)。用status查看数据库,如下:

mysql> status

--------------

/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.6.26, for osx10.8 (x86_64) using  EditLine wrapper


Connection id: 3

Current database: doubanspider

Current user: root@localhost

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.6.26 MySQL Community Server (GPL)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db     characterset: utf8

Client characterset: utf8

Conn.  characterset: utf8

UNIX socket: /tmp/mysql.sock

Uptime: 1 hour 28 min 5 sec

可以看到已经没有 latin-1 了,所以爆出'latin-1' codec can't encode character 还是比较不理解的。于是在网上找到了解决办法

http://blog.csdn.net/shuifa2008/article/details/9254389

全文转载记录如下:

UnicodeEncodeError: 'latin-1' codec can't encode character


"UnicodeEncodeError:'latin-1' codec can't encode character ..."

This is because MySQLdb normally tries to encode everythin to latin-1. This can be fixed by executing the following commands right after you've etablished the connection:

db.set_character_set('utf8')

dbc.execute('SET NAMES utf8;') dbc.execute('SET CHARACTER SET utf8;')

dbc.execute('SET character_set_connection=utf8;')

"db" is the result of MySQLdb.connect, and "dbc" is the result of db.cursor().

意思就是MySQLdb正常情况下会尝试将所有的内容转为latin1字符集处理


所以处理方法就是,设置连接和游标的charset为你所希望的编码,如utf8


db是connection连接,dbc是数据库游标

http://stackoverflow.com/questions/3942888/unicodeencodeerror-latin-1-codec-cant-encode-character


按照上面改了之后,亲测有效。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值