- 1、python中文亂碼解決
- 2、python3連接MSSQL資料庫 中文亂碼怎麼解決
- 3、python查mysql資料庫 返回結果的中文亂碼
- 4、python 向SQL Server2008插入中文數據亂碼
windows下的文件路徑,cmd窗口等默認編碼都是gbk
但在windows下編寫python程序的時候,我們一般採用的編碼是utf-8
二者不一致是導致亂碼的根本原因!
在pycharm下,為了中文不亂碼,那麼需要注意一下幾個方面:
一、每一個源程序文件頭部,需要加上
#-*-coding:utf-8;-*-
這樣就沒有亂碼了
以前用php連mssqy時也經常出現中文亂碼(中文變問號)的問題,那時就明白是編碼沒設置好導航,現在的Python連mssql資料庫也同樣出現這問題,問題一樣,解決的辦法當然也會相似,現在我們來看看解決方法。
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()
data
except
Exception,e:
e
運行結果如下:
代碼如下
複製代碼
[(u’20093501′,
u’xb9xf9xbexb8′,
u’u7537
‘,
35,
u’xb4xf3xcfxc0′),
(u’20093502′,
u’xbbxc6xc8xd8′,
u’u5973
‘,
34,
u’xc3xc0xc5xae’),
(u’20093503′,
u’xc1xeexbaxfcxb3xe5′,
u’u7537
‘,
25,
u’2Bxc7xe0xc4xea’),
(u’20093504′,
u’xc8xcexd3xafxd3xaf’,
u’u5973
‘,
24,
u’xc6xafxc1xc1′)]
[Finished
in
0.2s]
雖然擺脫了問號和亂碼的困擾,但這仍不是我們想要的結果,但這個確實是正確的,因為結果是utf8編碼。這個現象確實詭異,請教了許多高手,得知,最好的結果就是逐個欄位查詢,才能顯示中文,整個查詢的話,會以utf8的格式顯示出來。
上述代碼中第14行data是整個查詢的結果,如果指定某個具體的欄位,如print
data[0][2](表示取查詢結果的第一行第三列的欄位的值),則會輸出中文。
其實不僅僅是mssqlserver資料庫,mysql(需下載MySQLdb包)、sqllite(python自帶的文件資料庫)、mongodb(需下載PyMongo包)等或者是普通文本文件也是類似的解決方案。
這個不是亂碼,這是 unicode 字元串在內存中的形式,python 在命令行界面輸出的數據,如果不是ASCII碼,則會以十六進位形式輸出。需要輸出看見中文的話,代碼如下。
#利用第三方庫uniout,如果沒有就安裝:pip install uniout
import uniout
listnine = [‘梨’, ‘橘子’, ‘蘋果’, ‘香蕉’]
print listnine
1、中文亂碼問題:
(1)、文件頭加上#
-*-
coding:utf-8
-*-
或者
#coding=utf8
(2)、pymssql.connect連接串中charset是要跟你資料庫的編碼一樣,如果是資料庫是gb2312
,則寫charset=’gb2312’。
(3)、讀取數據時需要decode(‘utf-8’),寫入數據時需要encode(‘utf-8’),這樣就可以避免中文亂碼或報錯問題。
做個搬運工,轉載自網頁鏈接,我用方法2搞定了漢字查詢輸出。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127281.html