...但它并没有以同样的方式逃脱它两次。
我正在尝试将 ASCII 输出从 gpg 上传到网站。所以,到目前为止,我得到的只是查询表,向我显示它获得的数据,然后在它为 HTTP POST 请求编码后将其显示给我:
cnx = connect()
sql = ("SELECT Data FROM SomeTable")
cursor = cnx.cursor()
cursor.execute(sql)
for (data) in cursor:
print "encoding : %s" % data
postdata = urllib.urlencode( { "payload" : data } )
print "encoded as %s" % postdata
...但我得到的是:
encoding : -----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.12 (GNU/Linux)
.... etc...
encoded as payload=%28u%27-----BEGIN+PGP+MESSAGE-----%5CnVersion%3A+GnuPG+v1.4.12+... etc ...
需要注意的部分是换行符并没有像我预期的那样变成 %0A。相反,它们以某种方式转义为“\n”,然后反斜杠转义为 %5C,因此换行符变为“%5Cn”。更奇怪的是,数据前面加上了%28u%27,结果是“ (u' ”。
奇怪的是,如果我只是做一个基本的测试:
data = "1\n2"
print data
print urllib.urlencode( { "payload" : data } )
我得到了我的期望,换行符变成 %0A ...
1
2
payload=1%0A2
所以,我的预感是,从 mysql 查询返回的数据元素与我的文字“1\n2”(可能是一个 1 元素字典...不知道)不是同一种字符串,但我没有Python功夫知道如何检查它。
有谁知道这里发生了什么,以及我该如何解决?如果没有,关于如何通过 HTTP 发布此内容并正确转义所有内容的任何建议?