【发布时间】:2021-10-29 10:20:00
【问题描述】:
带有 Flask 2.0.1 和 Flask-SQLAlchemy 2.5.1 的 Python 3.8.8 程序
MySql 数据库,表格整理:utf8_general_ci。 我正在使用另外两个带有 SQLALCHEMY_BINDS 的 sqlserver 数据库。一切都在 Windows 10 上运行。
MySql DB 上的选择查询中的一些字符出错:“situazione è decisamente migliorata” 应该是:“situazione è decisamente migliorata”
这样可以解决问题:
mystring.encode('cp1252').decode('utf8')
但我需要一个程序级别的解决方案。我试过了:
- 附加到 SQLALCHEMY_DATABASE_URI 连接字符串: "?charset=utf8" 或 "?charset=cp1215" 等
- 设置 app.config['MYSQL_CHARSET'] 和 app.config['MYSQL_DATABASE_CHARSET'] 到 'utf8'、'utf8mb4'、'latin1'、'cp1252' ...
- 将参数传递给 SQLAlchemy,例如 db = SQLAlchemy(use_native_unicode="utf8"),这里也有很多变体
没有尝试成功。请给我建议。
【问题讨论】:
-
您确定问题出在哪里?您可能错误地解码为您的“打印”或您正在使用的 w/e 来查看此处的差异。可能还有一些其他地方的编码可能会混淆。
-
是的,绝对确定。我可以使用 pycharm 的调试器在选择查询的结果中读取错误的字符
标签: mysql flask sqlalchemy flask-sqlalchemy