Possible Duplicate:
UnicodeDecodeError when passing GET data in Python/AppEngine
在尝试提交表单时,我在本地和生产上得到了以下回溯。您能解释一下我应该在哪里查找,还是应该开始编写调试语句来查看异常在代码中的位置?
--> --> -->
Traceback (most recent call last):
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 3858, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 3792, in _Dispatch
base_env_dict=env_dict)
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 580, in Dispatch
base_env_dict=base_env_dict)
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 2918, in Dispatch
self._module_dict)
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 2822, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "/media/Lexar/montao/google/appengine/tools/dev_appserver.py", line 2704, in ExecuteOrImportScript
script_module.main()
File "/media/Lexar/montao/classifiedsmarket/main.py", line 2497, in main
util.run_wsgi_app(application)
File "/media/Lexar/montao/google/appengine/ext/webapp/util.py", line 98, in run_wsgi_app
run_bare_wsgi_app(add_wsgi_middleware(application))
File "/media/Lexar/montao/google/appengine/ext/webapp/util.py", line 116, in run_bare_wsgi_app
result = application(env, _start_response)
File "/media/Lexar/montao/google/appengine/ext/webapp/__init__.py", line 655, in __call__
response.wsgi_write(start_response)
File "/media/Lexar/montao/google/appengine/ext/webapp/__init__.py", line 274, in wsgi_write
body = self.out.getvalue()
File "/usr/lib/python2.6/StringIO.py", line 270, in getvalue
self.buf += ''.join(self.buflist)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
这个错误出现在/usr/lib/python2.6/StringIO.py中,即Python StringIO模块。我们不需要对该源文件(第49行)进行太多的读取就可以找到此警告:
对了!在getvalue()方法中再次出现警告。注意,这个警告是古老的;它提到unicodedeerror而不是unicodedecoderor,但是你得到了答案。
我建议对模块进行修补,以便在出错时显示包中的内容。在第270行结束冒犯性陈述,如下所示:
如果就地修补Python提供的模块的想法让您感到恐惧,请将修补后的版本放在比
sys.path
早的目录中。下面是一个混合非ASCII
str
和unicode
的示例:然后您可以运行您的应用程序并查看
buflist
中的内容:哪些部分是您编写的数据,哪些是由GAE提供的。您需要查看GAE文档,看看它是否需要str
内容(使用什么编码?)或者unicode
内容,并相应地调整代码。相关问题 更多 >
编程相关推荐