我正在用Python在GAE中编写一个在线表达式计算器。我使用查询字符串获取查询,然后计算表达式。例如,对于ishamsample.appspot.com/eval?q=9-6浏览器,应该显示{9-3}{6},这类似于查询工作正常,但问题是+符号。下面ishamsample.appspot.com/eval?q=1+6是我的代码。我试着引用URL
class Eval(webapp2.RequestHandler):
def get(self):
q=self.request.get('q')
q=urllib.quote(q)
code=eval(compile(q,'<string>', 'eval', __future__.division.compiler_flag))
self.response.write('{'+q+'}{'+str(code)+'}')对于该浏览器,输出显示为{1%206}{1}

如何克服这个问题。
发布于 2013-11-15 14:20:58
不应该在服务器端将得到的字符串编码为get参数。你应该对它进行解码,GAE为你做到了这一点。无论谁是客户端(此处:您作为用户),在发出HTTP请求之前,都应该对符号进行编码。
您的请求应该是:
http://.../?q=1%2B6我无法抗拒的一个评论是:EVAL是邪恶的。关于如何使用similar question.,请参考ast.literal_eval(..)。
发布于 2013-11-15 14:18:01
https://stackoverflow.com/questions/20002944
复制相似问题