解决Python 插查 MySQL 时中文乱码问题

时间:2023-11-26 10:45:20

首先找到这里的解决方法,

count = cursor.fetchall()

for i in count:

  idc_a = i[0]

  if isinstance(idc_a, unicode):

  idc_a = idc_a.encode('utf-8')

  print idc_a

但只能解决查询显示乱码问题

后来继续查资料,找到了这里

解决方法很简单拿,和数据库建立连接后,执行:

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().

这样基本解决了。在查看评论时,还看到了一种解决方法:

就是在连接数据库时,指定连接字符集

A lot of useless methods, mate. It is enough to connect with charset="utf8" param.
db = MySQLdb.connect(host="localhost", user = "root", passwd = "", db = "testdb", use_unicode=True, charset="utf8")

当然以上解决方案前提是,数据库在设计时为utf8,表的字符集也要创建为utf8:

修改表字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; 关于修改MySQL默认字符集,参见这边文章:
————>