場景
- 開發機win10,記E1。
- 服務器server 2012,記E2。
一個python數據處理腳本,功能是一些數據存儲操作。使用了pandas
、sqlalchemy
做數據庫連接。
在E1上正常運行,結果正確。部署到E2上後也能正常運行,但是出現中文亂碼。
亂碼出現在,從同一個sql server中讀取的中文數據裏。
一開始以爲是數據庫連接代碼缺了強制編碼類型,於是嘗試了?charset=utf8
等限制,沒有效果。
可能是因爲不同系統的一些設置不同導致的。但是這個問題我沒有找到正確的設置。
記起來,sql server的varchar
與nvarchar
是有區別的,其中varchar
容易導致中文亂碼的問題。
所以嘗試強制轉碼。
解決方案
df = pd.read_sql(xxxx)
df.name = df.name.apply(lambda x: str(x).encode('latin-1').decode('gbk'))
- 這樣
df.name
的中文亂碼就解決了。