2012-04-22 3 views
3

Hei. POST 메서드를 사용하여 JSP에서 Servlet으로 일부 정보를 전송합니다. POST 메서드를 통해 "+"문자를 보낼 때 공백 문자로 바뀌는 이유를 이해할 수 없습니다. 예 : 다음 문자열을 입력 할 때 : 4 + 5 -> 서블릿은 4 5를 반환합니다. 그것은 모든 "+"표시를 대체합니다. 이 문제를 어떻게 해결할 수 있습니까? 그 후에 표현식을 평가해야하기 때문에 "+"문자가 실제로 표시되어야합니다.POST 메서드가 '+'문자를 대체합니다.

+1

어울린다 "+"특수 문자입니다. URL에서이를 "% 2B"로 바꾸어 인코딩해야합니다. 다음은 특수 문자 대체 목록입니다. http://www.blooberry.com/indexdot/html/topics/urlencoding.htm –

+0

@BenoitCourtine 데이터가 URL의 일부가 아닌 POST를 통해 전송됩니다. 그러나이 게시물은 content-type application/x-www-form-urlencoded와 함께 전송 될 가능성이 높으므로 기본 사항이 여전히 유효합니다. –

답변

3

형식 변수에 URL 인코딩이 전송됩니다. "+"더하기 문자는 공백을 URL 인코딩 한 것입니다.

은 참조 : AJAX POST and Plus Sign (+) -- How to Encode?

리터럴 더하기 기호를 보내려면 , 당신이 중 하나를 자바 스크립트 또는 하드 코딩 "%의 2B '를 통해 인코딩 URL을해야합니다.

1

데이터를 서버로 보내기 전에 URLEncode 데이터가 필요합니다. 서버가 인코딩되지 않은 데이터를 디코딩하려고 시도하면 결과적으로 +이 공간으로 디코딩됩니다.

1

W3 document on HTTP form submission에 설명 된 것처럼 서블릿에서 데이터가 URL 인코딩으로 도착할 것으로 예상됩니다. POST를 위해 내용 유형을 변경하거나 보내려는 데이터를 (더 잘) 인코딩해야합니다. "+"기호를 "% 2B"로 인코딩 할 수 있습니다.

1

URL을 인코딩 할 때 + 문자는 공백을 나타냅니다. 당신이 URL이 문자를 사용해야하는 경우는 다음과 같이 이스케이프해야합니다 :

4+5 

4%2B5 
관련 문제