
Python连接mysql数据库时,读取数据库中的中文出现乱码,所有中文都显示为问号了。
数据库代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | -- 建表语句
CREATE TABLE books (
name varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
insert into books values( '万物生光辉' );
insert into books values( '我亲爱的甜橙树' );
insert into books values( '教父' );
insert into books values( '故事' );
insert into books values( '树上的男爵' );
insert into books values( '罗马人的故事2' );
insert into books values( '秘岛(全三册)' );
|
python代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env python
import pymysql.cursors
connection = pymysql.connect(user= '用户名' , passwd= '密码' , db= '数据库名' )
cursor = connection.cursor()
ex = cursor.execute( "select name from books" )
books = cursor.fetchmany(ex)
for book in books:
print ( "%s" % book[0])
connection.close()
|
输出结果如下:

下面我们就来看一下解决方法:
Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
MySQL数据库charset=utf-8
Python连接MySQL是加上参数 charset=’utf8’
读取数据后写入文件前执行编码book[0].encode(‘utf-8’)
最后测试的时候发现只需在连接MySQL的时候加上charset=’utf8’即可,以utf-8编码格式读取数据,其他条件无需添加,也不会出现从mysql中读取的数据出现中文乱码的情况。
更多Python知识请关注Python自学网。