본문 바로가기
spring

URL 인코딩

by proudev 2023. 5. 11.

URL에 포함된 non-ASCII문자를 문자 코드(16진수) 문자열로 변환

non-ASCII문자 ---->ASCII코드(문자코드: 16진수의 문자열)

non-ASCII문자를 ASCII 문자로 바꾼다. 
그 이유는 해당 서버가 어떤 OS, 언어를 사용하는지 모르기 때문이다.

ASCII 문자(0-9,A-Z,a-z,*,- 등) 국가별 인코딩 중 공통으로 가지고 있다.
그래서 모든 언어에 공통적으로 들어 있는 ASCII문자로 바꿔준다.
따라서, URL에 포함된 non-ASCII문자를 문자 코드(16진수) 문자열로 변환한다.

구민수 ----> URLEncoder.encode() --> %EA%B5%AC%EB%AF%BC
구민수 <--- URLDecoder.decode() <-- %EA%B5%AC%EB%AF%BC


예시) 
"구민수"라는 한글을 get 방식으로 보낼때는 브라우저가 URL을 UTF-8, ASCII 코드로 자동으로 바꿔준다.
그러나 post 방식으로 요청을 보낼때에는 브라우저에서 자동으로 ASCII코드로 바꿔주지 않는다.
그래서 값을 호출하기전에

request.setCharacterEncoding("UTF-8") // 설정해주어야함.
String name = request.getParameter("name")



만약 redirect로 요청을 다시 보낼 경우..
String msg=URLEncoder.encode("가나다라","utf-8");
return "redirect:/jojo?msg="+msg

spring에서는 character 인코딩 필터를 제공함. 

'spring' 카테고리의 다른 글

Spring DI(2)  (0) 2023.07.04
Spring DI(1)  (0) 2023.07.02
HttpServletRequest 요청 값 받는 다양한 방법  (0) 2023.02.01
Http Requset /Response  (0) 2023.01.16
스프링 @Controller 사용법  (0) 2023.01.15

댓글