1

パラメータを python cgi スクリプトに渡そうとしていますが、このパラメータにはプラス演算子が含まれています。

 /cgi-bin/test.py?input=print%20"%20"%20"%20%20-+-\"

Python cgi スクリプトは単純です。

#!/usr/bin/python -w
import cgi
fs = cgi.FieldStorage()

print "Content-type: text/plain\n"
strE=fs.getvalue("input")
print strE

私の出力は次のとおりです。

 print " " "  - -\"

「+」プラス演算子がスペースに置き換えられる理由がわかりません。「+」プラス演算子を渡すにはどうすればよいですか?

編集

@Tom Anderson が私の質問に答えてくれました。質問をもう少し広げたいと思います。

パラメータを使用してURLを取得するJavaスクリプト関数があります。

            <script type="text/javascript">

            function PostContentEditable(editableId,targetOutput)
            {
                        var texthtml = document.getElementById(editableId).innerHTML
                        var tmp = document.createElement("DIV");
                        tmp.innerHTML = texthtml ;
                        var str= tmp.textContent||tmp.innerText;

                        var xmlhttp;
                        if (str.length == 0){
                            document.getElementById(targetOutput).innerHTML = "";
                            return;
                        }
                        if(window.XMLHttpRequest){
                            xmlhttp=new XMLHttpRequest();
                        }
                        else{
                            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        xmlhttp.onreadystatechange=function(){
                            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                                 document.getElementById(targetOutput).innerHTML=xmlhttp.responseText;
                            }
                        }

                        xmlhttp.open("GET","../cgi-bin/exercise.py?input="+str,true);
                        xmlhttp.send();
            }
            </script>

すべての特殊文字を必要なものに置き換える自動組み込み関数はありますか?

  str = escapeStringToNativeUrl(str) ?
4

1 に答える 1

5

URL のクエリ部分には+、スペースを意味する特別なコードがあります。

これは、HTML 仕様のフォームに関する部分で、フォーム データがクエリ文字列のようにエンコードされるapplication/x-www-form-urlencodedことが指定されているためです。そのエンコーディングでは、空白文字は `+' に置き換えられます。

したがって、Python は入力を正しくデコードしています。

実際のプラスを渡したい場合は、としてパーセント エンコードする%2B必要があります。

JavaScript では、クエリ文字列を作成する正しい方法はencodeURIComponent.

于 2012-07-28T08:20:08.333 に答える