Python 3.3 CGI:无法用值%A3解码获得参数



我真的很努力寻找答案。

我正在编写一个简单的CGI脚本,输入获取参数将进行HTML编码例如£ -> %A3

这里2个测试URL IM在我的浏览器中使用。

?a =%7b& b =%a3

?a = {& b =£

当我从cgi.fieldstorage中循环循环时,我会获得B参数的异常。 - 我知道它与某种形式的编码有关,但我只是无法找到解决方案。

key = a
value = {
key = b

错误:'ascii'编解码器无法编码字符' ufffd'位置12:不在范围内(128)

key = a
value = {
key = b

错误:'ascii'编解码器无法编码字符' xa3'位置12:不在范围内(128)

以下是测试CGI脚本。

#!/opt/python-3.3.4/bin/python3
import cgitb
import cgi
import sys
print("Content-Type: text/html; charset=utf-8")
print("")

print("<html>")
print("<body>")
print("<h1>Hello</h1>")
form = cgi.FieldStorage()
#form = cgi.FieldStorage(encoding="utf8")
for i in form.keys():
   print("<br>key = ", i)
   try:
      tmp   = form[i].value
      print("<br>value = %s" % tmp)
   except Exception as err:
      print("<br>ERROR:", err)
print("</body>")
print("</html>")

我相信只能支持ASCII字符。因此,您需要使用非ASCII字符的帖子

最新更新