pyodbc - 'utf-8' 编解码器无法解码位置 n 中的字节 0xa0:无效的起始字节
pyodbc - 'utf-8' codec can't decode byte 0xa0 in position n: invalid start byte
我正在使用 pyodbc 从 sql 查询中读取数据帧,但一直收到错误提示 'utf-8' codec can't decode byte 0xa0 in position n: invalid start byte。代码如下。如何修复此错误?谢谢
import pyodbc
import pandas as pd
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=SSXBYXSQL107,5269;DATABASE=INV_Q1;Trusted_Connection=yes;')
conn.setencoding(encoding='utf-8')
conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
conn.setdecoding(pyodbc.SQL_WCHAR, encoding = 'utf-8')
sql_query="select [inventory_desc] from [INV_Q1].[INV_Detail].[Inventory]"
df_inv=pd.read_sql(sql_query, conn)
至少现在,SQL 服务器不会将 Unicode 字符作为 UTF-8 发送;它将它们作为 UTF-16LE 发送,而 UTF-16 是 pyodbc 期望的默认编码。这些 setencoding
/setdecoding
调用不适用于与 SQL 服务器的连接。
如pyodbc wiki所述:
SQL Server's recent drivers match the [ODBC] specification, so no configuration is necessary. Using the pyodbc defaults is recommended.
我正在使用 pyodbc 从 sql 查询中读取数据帧,但一直收到错误提示 'utf-8' codec can't decode byte 0xa0 in position n: invalid start byte。代码如下。如何修复此错误?谢谢
import pyodbc
import pandas as pd
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=SSXBYXSQL107,5269;DATABASE=INV_Q1;Trusted_Connection=yes;')
conn.setencoding(encoding='utf-8')
conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
conn.setdecoding(pyodbc.SQL_WCHAR, encoding = 'utf-8')
sql_query="select [inventory_desc] from [INV_Q1].[INV_Detail].[Inventory]"
df_inv=pd.read_sql(sql_query, conn)
至少现在,SQL 服务器不会将 Unicode 字符作为 UTF-8 发送;它将它们作为 UTF-16LE 发送,而 UTF-16 是 pyodbc 期望的默认编码。这些 setencoding
/setdecoding
调用不适用于与 SQL 服务器的连接。
如pyodbc wiki所述:
SQL Server's recent drivers match the [ODBC] specification, so no configuration is necessary. Using the pyodbc defaults is recommended.