【发布时间】:2017-12-19 03:06:29
【问题描述】:
我编写了一个小型网络应用程序,它从一个简单的 mysql 数据库中提取数据并通过 Python 和 Flask 显示它。数据库中的文本字段被编码为 utf8_general_ci,并且有些包含特殊字符 - 例如,'Zürich'。
作为 Flask/Jinja2 like to work on unicode,在查询之后字符串被转换为 unicode 以传递到模板中。奇怪的是,我需要一种不同的方法来转换为 unicode,具体取决于代码是在本地运行(Mac 笔记本电脑)还是部署在 GAE 上。
这在本地运行时有效:
return [[unicode(c, encoding='utf-8') if isinstance(c, basestring) else c for c in b] for b in l]
这在部署到 GAE 时有效:
return [[unicode(c, encoding='latin-1') if isinstance(c, basestring) else c for c in b] for b in l]
.
如果我在本地运行 GAE 版本,“Zürich”将显示为“Zürich”。反之亦然,我得到一个 UnicodeDecode 错误。
据我所知,这两个数据库是相同的——在线版本是本地版本的直接转储。
【问题讨论】:
标签: mysql python-2.7 google-app-engine unicode flask