【问题标题】:Does App Engine handle character encoding differently online vs. locally?App Engine 在线处理字符编码与本地处理字符编码的方式不同吗?
【发布时间】: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


    【解决方案1】:

    üü 的 Mojibake。

    有关可能原因的讨论,请参阅 here 中的“Mojibake”。

    请参阅here,了解有关在源代码中执行操作的 Python 说明。我不知道 Jinja 的具体情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 2020-02-19
      • 1970-01-01
      相关资源
      最近更新 更多