python的pymssql库中的UnicodeDecodeError

时间:2018-06-26 06:41:14

标签: python pymssql

我正在使用pymssql从SQL Server中获取一些数据,并将结果存储在pandas数据框中。当我尝试选择包含utf-8(Farsi)字符的列时,出现此错误:

  

UnicodeDecodeError:'utf-8'编解码器无法解码位置0处的字节0xca:无效的连续字节

但是对于数据库中的其他列,一切都很好。

这是我的代码段,我正在使用python3.6运行代码:

import pymssql
import pandas as pd

conn = pymssql.connect(server, username, password, database)
cursor = conn.cursor(as_dict=True)

cursor.execute("""
 SELECT id, title
 FROM products
""")


df = pd.DataFrame(columns=['id', 'title'])

for row in cursor:
    df = df.append(row, ignore_index=True)


conn.close()

1 个答案:

答案 0 :(得分:0)

您是否100%确定数据存储在UTF-8中?运行命令SELECT SERVERPROPERTY('Collation');应该可以帮助您确定数据库中数据的编码方式。

我认为默认编码为Latin-1,这意味着0xCA是“大写E抑扬符(Ê)”。

通过将参数charset="ISO-8859-1"添加到连接参数中,可以配置pymssql使用该编码访问数据库。