본문 바로가기

공부 자료/자바[JAVA]

[JAVA] URLEncoding이란? URL로 변환하기 위한 URLEncoder 사용

 

ASCII로 표현되는 URL 만들기

 

 

HTTP URL을 하나 살펴보고자 한다.

http://localhost:8080/detail?page=1 

http: (프로토콜 사용)     // (도메인 주소)    :8080 (포트번호)     / (루트)     ? (호출한 파라미터)를 의미한다.

 

그런데 URL에 한글이 들어가거나 다른 다양한 문자가 들어간 것을 본 적이 있나?를 생각하면 없다. 라는 결론이 나오게된다.

이는 URL의 경우 ASCII 코드로만 표현되기 때문에 한글 및 다양한 문자기호들을 사용할 수 없고,

해당 의미를 전달할 수 있는 정해진 인코딩 규약 RFC3986에 따라 변환이 가능하게 된다.

 

 

변한 규약은 아래 링크에서 참고하기

https://www.w3schools.com/tags/ref_urlencode.asp

 

HTML URL Encoding Reference

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

하지만 우리가 변환 규약을 하나하나 보면서 만들기는 쉽지 않은데,

이를 바로 변환해주는 것이 바로 URLEncoder이다.

 

 


 

 

내가 만약 http://localhost:8080/서울특별시/한강공원?사람수=5 라는 URL을 만들고 싶다면 아래와 같이 작성하면 된다.

* 한글을 인코딩 하는 것 이기 때문에 "UTF-8"을 이용

URLEncoder.encode(" http://localhost:8080/서울특별시/한강공원?사람수=5", "UTF-8");
// 결과 : http%3A%2F%2Flocalhost%3A8080%2F%EC%84%9C%EC%9A%B8%ED%8A%B9%EB%B3%84%EC%8B%9C%2F%ED%95%9C% EA%B0%95%EA%B3%B5%EC%9B%90%3F%EC%82%AC%EB%9E%8C%EC%88%98%3D

 

이러면 자동으로 인코딩을 해주어 나타내지게 된다.

 

 

그럼 과값을 가지고 원래의 의미도 알 수 있는데, 이를 디코딩(decoding)이라고 한다.

URLEncoder.decode("http%3A%2F%2Flocalhost%3A8080%2F%EC%84%9C%EC%9A%B8%ED%8A%B9%EB%B3%84%EC%8B%9C%2F%ED%95%9C% EA%B0%95%EA%B3%B5%EC%9B%90%3F%EC%82%AC%EB%9E%8C%EC%88%98%3D", "UTF-8");
// 결과 : http://localhost:8080/서울특별시/한강공원?사람수=5