Python连接mysql数据库时,读取数据库中的中文出现乱码,所有中文都显示为问号了。
数据库代码:
-- 建表语句 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代码:
#!/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自学网。