Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-从SQL server读取,并输出到csv-编码问题_Python_Sql Server_Csv_Pandas_Encoding - Fatal编程技术网

Python 熊猫-从SQL server读取,并输出到csv-编码问题

Python 熊猫-从SQL server读取,并输出到csv-编码问题,python,sql-server,csv,pandas,encoding,Python,Sql Server,Csv,Pandas,Encoding,我正在将数据从SQL Server 2014 12.0.4100 SP1数据库读入pandas。数据存储在Windows-1252编码中 我正在使用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

我正在将数据从SQL Server 2014 12.0.4100 SP1数据库读入pandas。数据存储在Windows-1252编码中

我正在使用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,我需要做什么?

解决方案是将任何带有非ASCII字符的列显式转换为utf-8

可以使用以下代码执行此操作:

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

转换后,您将能够毫无问题地写入.csv和Excel格式。

您是否尝试使用“ISO-8859-2”作为编码

df.to_csv("my_csv.csv", encoding="ISO-8859-2")