python - Python 2.7 - 带有来自 pyodbc 的数据的 Pandas UnicodeEncodeError
问题描述
我正在尝试使用 pyodbc 从 SQL Server 中提取数据并将其加载到数据框中,然后将其导出到 HTML 文件中,但我一直收到以下 Unicode 错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 15500: ordinal not in range(128)
这是我当前的设置(每个文档的编码说明):
cnxn = pyodbc.connect('DSN=Planning;UID=USER;PWD=PASSWORD;')
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='cp1252', to=unicode)
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='cp1252', to=unicode)
cnxn.setdecoding(pyodbc.SQL_WMETADATA, encoding='cp1252', to=unicode)
cnxn.setencoding(str, encoding='utf-8')
cnxn.setencoding(unicode, encoding='utf-8')
cursor = cnxn.cursor()
with open('Initial Dataset.sql') as f:
initial_query = f.read()
cursor.execute(initial_query)
columns = [column[0] for column in cursor.description]
initial_data = cursor.fetchall()
i_df = pd.DataFrame.from_records(initial_data, columns=columns)
i_df.to_html('initial.html')
需要注意的一个奇怪但有用的一点是,当我尝试导出 CSV 时:
i_df.to_csv('initial.csv')
我得到了同样的错误,但是当我添加时:
i_df.to_csv('initial.csv', encoding='utf-8')
有用。有人可以帮我理解这个编码问题吗?
旁注:我也尝试过使用sqlalchemy
连接,pandas.read_sql()
但同样的错误仍然存在。
解决方案
推荐阅读
- javascript - 使用 Dropzone.js 将文件作为二进制文件上传
- linux - 用于 wxWidgets 的 GdkWindow
- ios - CoreData 上下文在大数据集上保存糟糕的性能
- flutter - 检查类型类列表中的值
- amazon-web-services - 如何仅针对某些 IP 地址在 Kubernetes 中公开 tcp 服务?
- r - 如何将单热编码变量转换为 R 中的单个因素
- flutter - 颤振:使用 Float64List Matrix4 转换 CustomPaint 中的路径
- python - Python 和 C# TcpListener - 无法建立连接,因为目标机器主动拒绝它
- python - 在不平衡的数据集上使用 KNN 时,为什么设置 score='recall' 会将我的所有概率都变成二进制?
- angular - Angular 10匹配器孩子没有显示孩子