我正在使用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()
答案 0 :(得分:0)
您是否100%确定数据存储在UTF-8中?运行命令SELECT SERVERPROPERTY('Collation');
应该可以帮助您确定数据库中数据的编码方式。
我认为默认编码为Latin-1,这意味着0xCA是“大写E抑扬符(Ê)”。
通过将参数charset="ISO-8859-1"
添加到连接参数中,可以配置pymssql使用该编码访问数据库。