python讀取SQL server中文亂碼處理

場景

  • 開發機win10,記E1。
  • 服務器server 2012,記E2。
    一個python數據處理腳本,功能是一些數據存儲操作。使用了pandassqlalchemy做數據庫連接。
    在E1上正常運行,結果正確。部署到E2上後也能正常運行,但是出現中文亂碼。
    亂碼出現在,從同一個sql server中讀取的中文數據裏。
    一開始以爲是數據庫連接代碼缺了強制編碼類型,於是嘗試了?charset=utf8等限制,沒有效果。
    可能是因爲不同系統的一些設置不同導致的。但是這個問題我沒有找到正確的設置。
    記起來,sql server的varcharnvarchar是有區別的,其中varchar容易導致中文亂碼的問題。
    所以嘗試強制轉碼。

解決方案

  1. df = pd.read_sql(xxxx)
  2. df.name = df.name.apply(lambda x: str(x).encode('latin-1').decode('gbk'))
  3. 這樣df.name的中文亂碼就解決了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章