歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> 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()
Copyright © Linux教程網 All Rights Reserved