Python連接mysql數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)中的漢字是亂碼,所有漢字顯示為問號(hào)。我解決問題的步驟如下:
一、為什么會(huì)出現(xiàn)亂碼,出現(xiàn)亂碼的可能情況:
1.mysql數(shù)據(jù)庫(kù)項(xiàng)未設(shè)置編碼,默認(rèn)為'latin'
2.使用 MySQL.connect 時(shí)未設(shè)置默認(rèn)編碼
3.python的編碼沒有設(shè)置,python2.7默認(rèn)為'ascii'
4.無(wú)解碼
二、給大家分享幾個(gè)解決方案,如下:
1.設(shè)置mysql的編碼
ubuntu執(zhí)行下列語(yǔ)句:
** sudo vim /etc/mysql/my.cnf **
然后在里面插入語(yǔ)句:
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
退出 vim
重新啟動(dòng)mysql:
** sudo service mysql restart **
2.在code中設(shè)置MySQLdb的連接編碼參數(shù)
db=MySQLdb.connect(user='...',db='...',passwd='...',host='...',charset='utf8')
3.在code中設(shè)置python默認(rèn)編碼
# -*-coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
4.記得要解碼
t = cursor.fetchall()
s = t[0][1].decode('utf-8')
更多關(guān)于“Python培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽。
以上就是python查詢mysql中文亂碼的問題及解決方法,大家可以對(duì)癥下藥。