2015-05-29 34 views
1

我正在將數據從SQL Server 2014 12.0.4100 SP1數據庫讀入熊貓。數據存儲在Windows-1252編碼中。熊貓 - 從SQL服務器讀取數據並輸出到csv - 編碼問題

我正在使用python 2.7。

我想輸出結果數據框到Excel或csv。具體做法是:

import pyodbc 
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.\my_server;Database=my_db;Trusted_Connection=yes;') 
sql = "select * from my_table" 
df = pd.read_sql(sql, cnxn) 
df.to_csv("my_csv.csv", encoding="utf-8") 

然而,這種失敗,出現錯誤消息:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 13966: invalid start byte 

什麼我需要做的成功導出到UTF-8 CSV?

回答

2

解決方案是將任何具有非ASCII字符的列顯式轉換爲UTF-8。

您可以使用下面的代碼做到這一點:

def convert(my_str): 
    return my_str.decode('Windows-1252').encode('utf-8') 
df["Name"] = df["Name"].apply(convert) 

一旦轉換,你就能寫.csv和Excel格式,沒有任何問題。