자바스크립트 URL 디코딩 함수
자바스크립트에서 URL 디코딩 함수는 decodeURI()
와 decodeURIComponent()
함수 두 개가 있습니다. 이 두 함수의 사용 목적 및 차이점에 대해 비교해 보겠습니다.
같이 보기
자바스크립트 URL 디코딩 함수 비교
자바스크립트에서 URL 디코딩 함수인 decodeURI()
와 decodeURIComponent()
함수 두 개를 표로 비교해 보겠습니다.
특징 | decodeURI() |
decodeURIComponent() |
---|---|---|
사용 목적 | encodeURI() 로 인코딩한 URL을 디코딩 |
encodeURIComponent() 로 인코딩한 URI Component를 디코딩 |
사용 대상 | 전체 URI를 디코딩하는 데 사용 | 쿼리 문자열 내 각 값들을 디코딩하는 데 사용 |
예약 문자 및 특수 문자 처리 | 일부 예약 문자 및 특수 문자 유지(# 문자 등) |
모든 예약 문자 및 특수 문자 디코딩 |
주요 사용 사례 | 외부 링크 처리 및 브라우저 환경에서 사용 | 쿼리 문자열 디코딩, 사용자 입력 처리 등 |
decodeURI()
함수와 decodeURIComponent()
함수 두 개의 차이점을 코드 예시로 보겠습니다.
위의 결과에서 볼 수 있듯이
decodeURI()
함수는encodeURIComponent()
함수로 인코딩되어 있는 것을 디코딩할 때 몇몇을 디코딩하지 않습니다.- 반면에,
decodeURIComponent()
함수는encodeURIComponent()
함수로 인코딩되어 있는 것을 디코딩할 때 안전하게 해석해서 디코딩해 줍니다.
이는 각 함수의 사용 목적과 관련이 있습니다. decodeURI()
함수는 전체 URI를 디코딩하는 데 사용되는데, 이 때 예약 문자 중에서도 일부 문자를 디코딩하지 않는 것은 URI의 구조를 유지하기 위한 것입니다. 반면에 decodeURIComponent()
함수는 URI 컴포넌트를 디코딩하는 데 사용되는데, 여기서는 모든 예약 문자와 예외 문자까지도 디코딩하여 정확한 문자열을 얻기 위해 사용됩니다.
명세서
명세서 사양 | |
---|---|
decodeURI()
|
ECMAScript Language Specification #sec-decodeuri-encodeduri |
decodeURIComponent()
|
ECMAScript Language Specification #sec-decodeuricomponent-encodeduricomponent |
브라우저 호환성
함수 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
decodeURI()
|
1 | 12 | 1 | 1.1 |
decodeURIComponent()
|
1 | 12 | 1 | 1.1 |