FieldStorage输入删除一些字符

时间:2015-02-24 22:51:15

标签: python python-2.7 cgi

Putting" c ++"在输入框中,我的Python脚本只接收" c"。

这是HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
    <input id="inputtxt" type="text">&nbsp;
    <a onclick="window.location='escapetest.py?q='+document.getElementById('inputtxt').value;">Go!</a>
</body>
</html>

接收请求的python脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cgitb; cgitb.enable()

from cgi import FieldStorage


inputstr = FieldStorage()["q"]

print "Content-Type: text/html; charset=utf-8"
print
print inputstr.value

输出结果为:

  

C

运行Python 2.7(x64)并使用Firefox。

1 个答案:

答案 0 :(得分:2)

你没有正确地逃避你的价值; URL-encoded query value中的+字符是空格的编码值,所以您确实在打印:

"c  "

有两个空格的c。使用encodeURIComponent() function正确转义输入值,其中空格将被+替换,+将替换为%2B,以便Python可以将其解码回{ {1}}:

+