Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Python调用MySQLdb插入中文乱码的问题

  1. #!/usr/bin/python   
  2. # -*- coding: utf-8 -*-   
  3.   
  4. import MySQLdb  
  5.   
  6. def main():  
  7.     fullname = "赵钱孙李"  
  8.   
  9.     conn = MySQLdb.connect(host="localhost", user="root",passwd="123", db="account", charset="utf8")  # OK   
  10.     #conn = MySQLdb.connect(host="localhost", user="root",passwd="123", db="account")  # Error!!!   
  11.     cursor = conn.cursor()  
  12.     cursor.execute("insert into account (username,password) values ("%s","%s")" % (fullname, "111"))  
  13.     conn.commit()  
  14.     cursor.close()  
  15.     conn.close()  
  16.   
  17. if __name__ == "__main__":  
  18.     main()  
如果从终端查询到数据库中的中文是乱码,那么在连接时给出charset参数即可(当然数据库和表必须全部都是utf-8的)。
否则默认插入的字符应该是latin-1的(用fullname.decode("utf8")时报该错误)。然后将从数据库中读取的中文输出到网页,如果没有任何内容显示,加入以下代码可解决:
  1. import sys  
  2. reload(sys)  
  3. sys.setdefaultencoding("utf-8")  
Python内部处理编码默认是ascii的: print sys.getdefaultencoding()