2012-07-28 2 views
1

매개 변수를 파이썬 CGI 스크립트에 전달하려고하는데이 매개 변수에 더하기 연산자가 포함되어 있습니다.Python CGI 스크립트에서 매개 변수로 '+'더하기 연산자를 전달할 수 없습니다.

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

파이썬 CGI 스크립트는 간단하다

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

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

내 출력은 : '+'플러스 연산자는 공간으로 치환 된 이유는, 이해하지

print " " " - -\" 

'+'더하기 연산자를 어떻게 전달할 수 있습니까?

편집

@ 톰 앤더슨은 내 질문에 대답하고, 나는 내 질문에 좀 더 확장 할. 내가 필요한 모든 특수 문자를 대체하는 자동 내장 함수가 있습니까

  <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> 

을 :

나는 매개 변수로 URL을 가져옵니다 호출하는 자바 스크립트 기능이?

str = escapeStringToNativeUrl(str) ? 

답변

5

URL의 쿼리 부분에서 +은 공백을 의미하는 특수한 코드입니다.

이는 양식과 관련된 HTML 사양의 일부가 form data is encoded as application/x-www-form-urlencoded in a query string을 지정하기 때문입니다. 해당 인코딩에서 space characters are replaced by `+'.

그래서 파이썬은 입력 내용을 정확하게 해독합니다.

실제 플러스를 전달하려는 경우 percent-encode%2B으로 입력해야합니다.

자바 스크립트에서 나는 the right way to build the query string is with encodeURIComponent을 믿습니다.

+0

감사합니다. 그 특수 문자에 대한 바로 가기를 어디에서 찾을 수 있습니까? – Michael

+0

내 질문을 편집했는데 정확한 문자열에 문자열을 전송하는 자바 스크립트 함수가 있습니까? – Michael

+1

공간 만이 특별 대우를받습니다. 그 밖의 모든 것에 대해서는, 그것이 [예약되지 않은 문자] (http://tools.ietf.org/html/rfc3986#section-2.3)라면 그대로 사용할 수도 있고, 그렇지 않은 경우에는 백분율로 인코딩해야 할 수도 있습니다 . –

관련 문제