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