java에서 URLEncoder.encode 및 URLDecoder.decode 처리 url 특수 매개 변수 방법
유사:
za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==
분명히 이 안에는 특수한 문자가 포함되어 있다./+ = 등등. 만약 url을 통해 이 인자를 직접 전달한다면:
url = "xxxxx?param=" + "za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==";
그러면 서버에서 파라미터를 얻으면 다음과 같은 값이 됩니다.
"za4T8MHB/6mhmYgXB7IntyyOUL7Cl 0jv5rFxAIFVji8GDrcf k8g=="
우리는 세 개의 + 번호가 사라지는 것을 보았다.그 이유는 url 매개 변수 값이 특수 문자를 포함하고 있을 때 url 인코딩을 사용해야 하기 때문이다.
url = "xxxxx?param=" + URLEncoder.encode("xxx", "utf-8");
그리고 서버가 가져올 때:
String param = URLDecoder.decode(param, "utf-8");
이렇게 해야만 정확한 값을 얻을 수 있다: "za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g=="
사실 js에도 유사한 기능의 함수가 있다.참조: js에서 인코딩 함수:escape,encodeURI,encodeURIComponent
참고 사항:
URLEncoder should be the way to go. You only need to keep in mind to encode only the individual query string parameter name and/or value, not the entire URL, for sure not the query string parameter separator character & nor the parameter name-value separator character =
String q = "random word 500 bank $";
String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");
URLEncoder는 매개 변수나 매개 변수의 값만 인코딩해야 하며, 전체 URL을 인코딩할 수도 없고, param=value
를 함께 인코딩할 수도 없습니다.param=URLEncode(value, "utf-8")
또는 URLEncode(param, "utf-8")=URLEncode(value, "utf-8")
url의 &와 = 그들은 매개 변수와 매개 변수와 값 사이의 구분자로서만약 함께 인코딩을 했다면, 그들을 구분할 수 없었을 것이다.추가 참조 문서:
https://www.talisman.org/~erlkonig/misc/lunatech%5Ewhat-every-webdev-must-know-about-url-encoding/
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있기를 바랍니다. 만약에 의문이 있으면 여러분은 댓글을 남겨 교류할 수 있습니다. 저희에 대한 지지에 감사드립니다.