国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python連接mssql數據庫編碼問題解決方法

2020-02-23 06:18:32
字體:
來源:轉載
供稿:網友

python一直對中文支持的不好,最近老遇到編碼問題,而且幾乎沒有通用的方案來解決這個問題,但是對常見的方法都試過之后,發現還是可以解決的,下面總結了常用的支持中文的編碼問題(這些方法中可能其中一個就能解決問題,也可能是多個組合)。

(1)、首先,要保證文件的開頭要加上編碼設置來說明文件的編碼
代碼如下:
#encoding=utf-8

(2)、然后,在連接數據的連接參數里加上字符集說明查詢出的結果的編碼,這個不加的后果可能是查詢出的漢字字符都是問號
代碼如下:
conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

(3)、設置python系統的默認編碼(對于文件來說,這招幾乎屢試不爽,呵呵~~)
代碼如下:
import sys
reload(sys)
sys.setdefaultencoding('utf8')

注意:上述編碼是“utf8”,而不是“utf-8”,我也沒弄明白,大部分情況下,這個無所謂的,但是這里我試了必須要是“utf8”

一個簡單的完整的python連接mssqlserver的例子如下(得安裝pymssql包):

代碼如下:
#encoding:utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import pymssql
try:
    conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')
    sql="select * from UserInfo"

    cur=conn.cursor()
    cur.execute(sql)
    data=cur.fetchall()
    conn.close()
    print data
except Exception,e:
    print e

運行結果如下:
代碼如下:
[(u'20093501', u'/xb9/xf9/xbe/xb8', u'/u7537 ', 35, u'/xb4/xf3/xcf/xc0'),
 (u'20093502', u'/xbb/xc6/xc8/xd8', u'/u5973 ', 34, u'/xc3/xc0/xc5/xae'),
 (u'20093503', u'/xc1/xee/xba/xfc/xb3/xe5', u'/u7537 ', 25, u'2B/xc7/xe0/xc4/xea'),
 (u'20093504', u'/xc8/xce/xd3/xaf/xd3/xaf', u'/u5973 ', 24, u'/xc6/xaf/xc1/xc1')]
 [Finished in 0.2s]
 
  雖然擺脫了問號和亂碼的困擾,但這仍不是我們想要的結果,但這個確實是正確的,因為結果是utf8編碼。這個現象確實詭異,請教了許多高手,得知,最好的結果就是逐個字段查詢,才能顯示中文,整個查詢的話,會以utf8的格式顯示出來。

  上述代碼中第14行data是整個查詢的結果,如果指定某個具體的字段,如print data[0][2](表示取查詢結果的第一行第三列的字段的值),則會輸出中文。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯门区| 日喀则市| 东宁县| 康定县| 三明市| 广元市| 长海县| 鹰潭市| 恩施市| 丽江市| 通州区| 信阳市| 新干县| 江源县| 唐海县| 普格县| 郎溪县| 尖扎县| 宜都市| 洛阳市| 广河县| 沙洋县| 汽车| 红原县| 宁城县| 宝鸡市| 唐山市| 和顺县| 舒兰市| 泰州市| 蛟河市| 阿坝县| 肥西县| 东海县| 乐安县| 日喀则市| 香河县| 海阳市| 宜宾县| 壤塘县| 开封市|