2013-03-05 2 views
5

와 20 %를 교체합니다. 백엔드에서 % 20을 (를) 대체 할 수는 있지만 올바른 접근 방식이 아니므로 응용 프로그램의 어느 곳에서나 발생할 수 있습니다. 자바 URL의 PARAM 내 웹 페이지에서 공간

당신이 양식을 제출하면 프런트 엔드에서 그것을 처리하는 더 좋은 방법이 있나요?

+1

아무것도. URL = URL.replaceAll ("% 20", ""); ' – Maroun

+1

url = url.value.replace ("% 20", ""); –

+1

더 좋은 방법은 없습니다. 이것이 표준 HTTP 웹 인코딩입니다.이 형식으로되어 있어야합니다. 맞습니다. 자세한 내용은 W3C의이 인코딩 문서를 참조하십시오. http://www.w3schools.com/tags/ref_urlencode.asp 당신이 그것을 할 필요가 없습니다 – ninnemannk

답변

16

값. URL에서 문자가 이스케이프 처리되는 방식입니다.

String decoded = URLDecoder.decode(queryString, "UTF-8"); 

는 그런 다음 URL의 쿼리 부분을 파싱 키/값 쌍의지도를 구축 할 수 있습니다 : 그 이름에도 불구하고, 그것은 application/x-www-form-urlencoded 디코딩을 수행, 때문에 특히 적합하다, URLDecoder를 사용한다 &으로 분할하고 =을 사용하여 값과 키를 구분합니다 (null 일 수도 있음).

그러나 URL이 URI 개체로 전달 된 경우에는 이미 이스케이프 처리되지 않은 텍스트를 반환하는 nice getQuery()이 있습니다. 당신은 서블릿 API를 사용하는 경우

, 당신은 getParameterMap() 같은 좋은 방법이 있기 때문에 아무것도 탈출 할 필요가 없습니다. '% 20`을 받고 문제

+0

아마도 서버 측에서 사용하는 프레임 워크는 일부 * params * 맵에서 모든 것을 사용할 수있게합니다. 필자의 예제에서 UTF-8은 디코더가 '% 20'이 참조하는 charset을 알아야하기 때문에 제공됩니다. "* 현재 URL 요청은 이미 UTF-8입니다 *"정확히 의미하는 것이 무엇인지 모르겠습니다 ... – Raffaele

+0

요청 줄 (호스트 뒤에있는 부분 포함)은 ASCII 문자의 하위 집합 만 포함 할 수 있습니다. 또한 일부 문자는 특수 문자이므로 이스케이프해야합니다. 또한, 화이트리스트 이외의 모든 문자는 %의 XX'는'사용하여 이스케이프해야합니다 - 참조 [RFC 2396] (http://www.ietf.org/rfc/rfc2396.txt) 아무 것도이 같은이 없습니다 – Raffaele

+0

* UTF-8 charset *. 유니 코드 세트가 있고 UTF-8은 인코딩 체계입니다. 내 대답에 사용되는 자바 API는 옥텟에서 문자를 구성하는 체계가 필요하다. – Raffaele

4
try { 
     String result = URLDecoder.decode(urlString, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }