// 주어진 문자열들을 변수에 할당합니다.
const set1 = ";,/?:@&=+$"; // 주목해 주세요! 인코딩 방식에 따라 결과가 다릅니다.
const set2 = "-_.!~*'()";
const set3 = "#"; // 주목해 주세요! 인코딩 방식에 따라 결과가 다릅니다.
const set4 = "ABC abc 123";

// 주어진 문자열들을 encodeURI() 함수와 encodeURIComponent() 함수를 사용하여 인코딩합니다.
const encodedSet1 = encodeURI(set1);
const encodedSet2 = encodeURI(set2);
const encodedSet3 = encodeURI(set3);
const encodedSet4 = encodeURI(set4);

const encodedURIComponentSet1 = encodeURIComponent(set1);
const encodedURIComponentSet2 = encodeURIComponent(set2);
const encodedURIComponentSet3 = encodeURIComponent(set3);
const encodedURIComponentSet4 = encodeURIComponent(set4);

// 결과를 출력합니다.
console.log("encodeURI() 함수로 인코딩:");
console.log(encodedSet1); // %3B,/?:@&=+$
console.log(encodedSet2); // -_.!~*'()
console.log(encodedSet3); // #

console.log("encodeURIComponent() 함수로 인코딩:");
console.log(encodedURIComponentSet1); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodedURIComponentSet2); // -_.!~*'()
console.log(encodedURIComponentSet3); // %23

console.log("encodeURI() 함수로 인코딩한 것을 decodeURI() 함수로 디코딩:");
console.log(decodeURI(encodedSet1)); // ;,/?:@&=+$
console.log(decodeURI(encodedSet2)); // -_.!~*'()
console.log(decodeURI(encodedSet3)); // #

console.log("encodeURIComponent() 함수로 인코딩한 것을 decodeURI() 함수로 디코딩:");
console.log(decodeURI(encodedURIComponentSet1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(decodeURI(encodedURIComponentSet2)); // -_.!~*'()
console.log(decodeURI(encodedURIComponentSet3)); // %23

console.log("encodeURIComponent() 함수로 인코딩한 것을 decodeURIComponent 함수로 디코딩:");
console.log(decodeURIComponent(encodedURIComponentSet1)); // ;,/?:@&=+$
console.log(decodeURIComponent(encodedURIComponentSet2)); // -_.!~*'()
console.log(decodeURIComponent(encodedURIComponentSet3)); // #
자바스크립트 URL 디코딩 함수 브라우저 호환성
함수
데스크탑 Chrome
Chrome
데스크탑데스크탑 Edge
Edge
데스크탑 Firefox
Firefox
Safari
Safari
decodeURI() 1 12 1 1.1
decodeURIComponent() 1 12 1 1.1

caniuse.com에서 더 자세한 정보를 확인해 보세요.