python - 使用 gae python 处理 HTTP POST 中的外来字符

标签 python http google-app-engine post

让我感到困惑的是,我有 2 个 HTTP POST 函数,其中一个会打断外来字符,而我只是执行 self.request.POST.get('text') 来获取两者的值功能。我看到的不同之处在于它在中断的地方继承了 blobstoreuploadhandler 因此我怀疑它可能与该更改有关。例如,我不明白为什么 ÅÄÖ 首先起作用,然后我做了一个看似无关的更改,突然间任何非 ASCII 字符都被破坏了。

请帮助我理解 python 应该如何与 unicode 和 utf-8 一起工作。

我有完整的 2 个代码示例,其中一个有效,另一个扭曲了 ÅÄÖ 等外来字符,我只需要知道要更改什么,我认为应该可以进行调整以使其按预期运行。

如果我输入 ÅÄÖ,输出会变成 xcTW,而它应该是 ÅÄÖ,这可能有助于了解问题的确切原因。

提到的2段代码是

class AList(RequestHandler, I18NHandler):
  ...
  a.text = self.request.POST.get('text')

以上作品。然后我改成了

class AList(RequestHandler, I18NHandler, blobstore_handlers.BlobstoreUploadHandler):  
   ...
  a.text = self.request.POST.get('text')

这似乎是唯一的区别。我的 2 个想法是使用同一个应用程序部署 2 个示例,看看是什么真正导致了这个问题,因为它可能在也可能不在我粘贴在这里的代码中。

当本地外来字符按预期工作时,这也只是一个生产问题。

看来是和blobstoreuploadhandler的使用有关,下面通过email重现乱码:

class ContactUploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        message = mail.EmailMessage(sender='admin@myapplicationatappspot.com', subject=self.request.POST.get('subject'))
        message.body = ('%s \nhttp://www.myapplicationatappspot.com/') % ( self.request.POST.get('text') )
        message.to='info@myapplicationatappspot.com'
        message.send()
        self.redirect('/service.html')

最佳答案

看起来你遇到了这个错误:http://code.google.com/p/googleappengine/issues/detail?id=2749

作为解决方法,直到它得到修复,您可以使用 JavaScript 在 base64 中对所有输入进行编码。这并不理想,但对我有用。

关于python - 使用 gae python 处理 HTTP POST 中的外来字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375673/

相关文章:

python - GAE 和 Python : My dictionary values return None instead of an object

http - 在不同位置提供静态文件

java - 此应用程序不存在 (app_id=u'google.com :nbsocialmetrics')

python - 是否应该将 conda 或 conda-forge 用于 Python 环境?

Python IOError : [Errno 5] Input/output error? 错误

Android - Sharepoint 服务器应用程序通信

java - 有效测量 dns 查找和站点内容下载持续时间

java - GAE Java 本地数据存储总体大小限制?

python - 字典中的组合键

python - 如何使用 sys.modules 和 mock.patch 进行模拟(Python 对静态函数的干扰)