来自webapp2中GET参数的UnicodeDecodeError

时间:2012-10-28 22:37:47

标签: python google-app-engine jinja2 webapp2

我从webapp2收到包含unicode字符的GET参数,然后使用它来执行NDB查询时收到UnicodeDecodeError。我在处理程序中的参数上手动运行unicode()时收到相同的错误消息,因此在webapp2的URL路由中似乎存在问题或者我错过了某些内容。最好在传递给处理程序之前将所有GET参数转换为unicode,这样我就不需要在所有处理程序中进行手动转换。我实际上认为它在之前的版本中有用。

完整的错误消息为:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)

GET参数包含以下字符串:göteborg。当我在它上面引发Exception时它看起来很好,但是当我(或NDB)在它上面使用unicode()时给我一个错误。

修改

在NDB中,它在以下代码上失败:File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore_types.py", line 1562, in PackString pbvalue.set_stringvalue(unicode(value).encode('utf-8'))

编辑2:

我后来发现我的问题实际上不是GET参数,而是处理程序的get()方法接收的URL的路由部分作为关键字参数。查看this follow-up question以获取有关如何自动解码这些参数的解决方案。

感谢。

1 个答案:

答案 0 :(得分:1)