- #!/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()