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
'공부 자료 > 자바[JAVA]' 카테고리의 다른 글
[JAVA] 빠른 입출력을 위한 BufferedReader(StringTokenizer) & BufferedWriter (0) | 2023.11.08 |
---|---|
[JAVA] URL을 통해 서버와 통신하는 URLConnection/HttpURLConnection (0) | 2023.11.08 |
[JAVA] StringBuilder란? (0) | 2023.11.07 |
[JAVA] ArrayList 생성자 (0) | 2023.08.30 |
[JAVA] 객체지향 프로그래밍(OOP) 기초, 클래스, 객체 (0) | 2023.08.21 |