2017-07-14 83 views
0

我写了一个小型的网络应用程序,它从一个简单的mysql数据库中提取数据,并通过Python和Flask显示它。数据库中的文本字段编码为utf8_general_ci,其中一些包含特殊字符 - 例如“Zürich”。App Engine是否处理与本地不同的字符编码?

由于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错误。

据我所知,这两个数据库是相同的 - 在线版本是本地版本的直接转储。

回答

0

üü的Mojibake。

请参阅here中的“Mojibake”以了解可能的原因。

请参阅here了解有关在源代码中执行操作的注意事项。我不知道Jinja的具体细节。