[转]python的mysql中文编码

来源:互联网 发布:李小龙 命理 知乎 编辑:程序博客网 时间:2024/04/30 21:35
到google搜到很多关于python里mysql编码的问题,逐一试用,却并不是那么有效,还是看到一大堆乱码。
解决方案无非就是把python的代码的开头编码用utf-8,打开数据库连接的时候也用charset='utf8',还搞什么sys.setdefaultencoding('gbk'),mysql的my.cnf配置文件里面配置为utf-8。等等之类的东西,无效,插入中文还是乱码,就是插到数据库里面,直接看数据库里的中文都是编码,或者是????什么的。
没办法了,只能自己把问题简单化,mysql的默认编码为latin1,关键容易报错的地方是cursor.execute里要执行一下encode(charset),既然这里要encode,那就在外面先decode一下,果然
sql = "insert into aa values('测试')"
sql = sql.decode('latin1')
再执行
cursor.execute(sql)
这样就解决问题了,中文插入,中文显示,在数据库直接查看也是中文。
 不需要搞那么复杂,还去改my.cnf文件,又去sys.reload(),打开数据库还要设charset,通通不需要弄。