當前位置:成語大全網 - 書法字典 - python3連接MSSQL數據庫時中文亂碼怎麽解決?

python3連接MSSQL數據庫時中文亂碼怎麽解決?

以前用php連接MSQY時,經常會出現中文亂碼的問題(中文改成問號)。當時我就明白了,編碼中導航設置不當,現在Python甚至在mssql數據庫中也有這個問題。問題是壹樣的,解決方法當然也會差不多。現在我們來看看解決方案。

Python對中文的支持壹直很差,最近又總是遇到編碼問題,而且幾乎沒有通用的解決方案。但是在嘗試了所有常用的方法後,發現還是可以解決的。下面總結了常用的支持中文的編碼問題(其中壹種方法可能解決問題,也可能是幾種方法的組合)。

(1),首先確保在文件開頭添加編碼設置,說明文件的編碼。

代碼如下所示

復制代碼

#編碼=utf-8

(2)然後,將字符集添加到連接數據的連接參數中,以解釋查詢結果的代碼。這種遺漏的後果可能就是查詢到的漢字都是問號。

代碼如下所示

復制代碼

conn=pymssql.connect(server= ' . ',用戶=“”,

密碼= ' ',數據庫='MyTest ',字符集='utf8 ')

(3)設置python系統的默認編碼(對於文件,這種方法幾乎都試過,呵呵~ ~)

代碼如下所示

復制代碼

進口

[計]系統復制命令(system的簡寫)

重新加載(系統)

sys.setdefaultencoding('utf8 ')

註意:以上編碼是utf8,不是utf-8。我也不懂。大多數情況下沒關系,但是我在這裏試過,肯定是utf8。

下面是壹個簡單完整的python與mssqlserver的連接示例(必須安裝pymssql包):

代碼如下所示

復制代碼

#編碼:utf8

進口

[計]系統復制命令(system的簡寫)

重新加載(系統)

sys.setdefaultencoding('utf8 ')

進口

pymssql

嘗試:

conn=pymssql.connect(server= ' . ',用戶=“”,

密碼= ' ',數據庫='MyTest ',字符集='utf8 ')

sql= "選擇

*

用戶信息"

cur=conn.cursor()

當前執行(sql)

data=cur.fetchall()

conn.close()

打印

數據

除...之外

例外情況,e:

打印

e

運行結果如下:

代碼如下所示

復制代碼

[(u'20093501 ',

u'xb9xf9xbexb8 ',

u'u7537

,

35,

u'xb4xf3xcfxc0 '),

(u'20093502 ',

u ' xbb xc 6 CX 8 xd 8 ',

u'u5973

,

34,

u'xc3xc0xc5xae '),

(u'20093503 ',

u ' xc 1x eexbafcxb3 xe 5 ',

u'u7537

,

25,

u'2Bxc7xe0xc4xea '),

(u'20093504 ',

u'xc8xcexd3xafxd3xaf ',

u'u5973

,

24,

u'xc6xafxc1xc1')]

[完成

0.2s]

雖然我們去掉了問號和亂碼,但這仍然不是我們想要的結果,但確實是正確的,因為結果是utf8編碼。這種現象真的很奇怪。咨詢了很多專家後得知,最好的結果是壹次查詢壹個字段顯示中文,整個查詢會以utf8格式顯示。

上面代碼中14行的數據是整個查詢的結果。如果指定了特定字段,如打印,

Data[0][2](表示查詢結果第壹行第三列字段的值),將輸出中文。

其實不僅是mssqlserver數據庫,mysql (MySQLdb包需要下載)、sqllite(python自帶的文件數據庫)、mongodb (PyMongo包需要下載)或者普通的文本文件都是類似的解決方案。