【问题标题】:SQLAlchemy Returning UTF-8 as Latin1 StringsSQLAlchemy 将 UTF-8 作为 Latin1 字符串返回
【发布时间】:2013-12-10 02:17:10
【问题描述】:

我有一个用 UTF-8 编码的 MySQL 数据库,但是当我使用 SQLAlchemy (Python 2.7) 连接到它时,我得到了带有 Latin1 Unicode 字符的字符串。

因此,比利时(België)的荷兰语拼写为

'Belgi\xeb'

而不是

'Belgi\xc3\xab'

或者,理想情况下是 Unicode 对象

u'Belgi\xeb'

【问题讨论】:

    标签: python unicode utf-8 sqlalchemy latin1


    【解决方案1】:

    根据文档 (http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#custom-dbapi-args):

    如果 use_unicode=1 参数或 charset 参数作为连接参数传递,MySQLdb 将容纳 Python unicode 对象。

    如果没有此设置,许多 MySQL 服务器安装默认为客户端连接的 latin1 编码。

    你需要使用

    create_engine('mysql+mysqldb://HOSTNAME/DATABASE?charset=utf8')
    

    而不仅仅是

    create_engine('mysql+mysqldb://HOSTNAME/DATABASE')
    

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2015-03-09
      • 2018-12-26
      • 1970-01-01
      • 2012-03-24
      • 2019-03-20
      相关资源
      最近更新 更多