国产探花免费观看_亚洲丰满少妇自慰呻吟_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包)等或者是普通文本文件也是類似的解決方案。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 江北区| 肥乡县| 清水县| 青海省| 德钦县| 西城区| 方城县| 涞水县| 安仁县| 比如县| 鹤峰县| 永靖县| 涿州市| 东兰县| 安塞县| 墨竹工卡县| 汽车| 博湖县| 青州市| 富阳市| 宁明县| 广水市| 长汀县| 斗六市| 名山县| 尉氏县| 来宾市| 渭源县| 芜湖市| 凭祥市| 万山特区| 固镇县| 运城市| 柘荣县| 五原县| 定日县| 乡宁县| 邓州市| 华容县| 同仁县|