python - Python的pymssql库中的UnicodeDecodeError
问题描述
我正在使用 pymssql 从 SQL 服务器获取一些数据并将结果存储在 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()
解决方案
您是否 100% 确定数据以 UTF-8 存储?运行该命令SELECT SERVERPROPERTY('Collation');
应该可以帮助您确定数据在数据库中的编码方式。
我认为默认编码是 Latin-1,这意味着 0xCA 是“大写 E 抑扬符 (Ê)”。
charset="ISO-8859-1"
您可以通过将参数添加到连接参数来配置 pymssql 以使用该编码访问数据库。
推荐阅读
- python-3.x - 从“选择”中选择没有 ID、名称或 XPATH 的下拉项目?
- python - 如何在python pandas中将值范围更改为实际值
- java - 反射 - 获取列表的大小
- csv - 明智地拆分 CSV 列,在 shell 脚本中没有唯一的分隔符
- python - 小部件随着布局的几何形状而被拉伸
- c# - 如何使用托管标识从 Visual Studio 运行 EF6 代码优先迁移
- python - 有没有办法将特定列从 excel 表(比如 sheet_1)复制到 sheet_2 中的另一列?使用 Python
- google-app-engine - 部署在 Google App Engine 上的应用的 /healthz 路由返回 404
- java - 为什么我们在初始化时要传递集合(或任何对象)的引用?请检查下面的代码
- markdown - 如何在 GitHub 的自述降价文件中使标题可折叠?