포스트

자바스크립트에서 escape 함수로 인코딩된 문자열 해독하기

개요

인터넷에서 데이터를 주고받을 때, 문자열을 인코딩하고 디코딩하는 과정은 필수적입니다. 자바스크립트에서는 이를 위한 여러 함수가 존재합니다. 그 중 escape 함수는 이제는 구식이지만, 여전히 많은 곳에서 사용되고 있습니다. 이 글에서는 escape로 인코딩된 문자열을 어떻게 디코딩하는지 알아보겠습니다.

escape 함수의 작동 원리

escape 함수는 문자열 내의 특수 문자나 공백 등을 %로 시작하는 이스케이프 시퀀스로 변환합니다. 예를 들어, 공백은 %20으로 변환됩니다.

디코딩 방법 1: unescape 함수 사용하기

escape로 인코딩된 문자열을 디코딩할 가장 간단한 방법은 unescape 함수를 사용하는 것입니다.

1
2
var encodedStr = escape("Hello World!");
var decodedStr = unescape(encodedStr);

이 코드에서 decodedStr는 원래의 “Hello World!” 문자열로 복원됩니다.

디코딩 방법 2: decodeURIComponent 함수 사용하기

unescape 함수는 이제는 구식이므로, 현대 자바스크립트에서는 decodeURIComponent 함수를 추천합니다.

1
2
var encodedStr = escape("Hello World!");
var decodedStr = decodeURIComponent(encodedStr);

decodeURIComponent 함수도 unescape 함수처럼 작동하지만, 더 다양한 문자를 처리할 수 있습니다.

주의사항: Error: URIError: malformed URI sequence

decodeURIComponent 함수를 사용할 때 주의해야 할 점은 잘못된 형식의 문자열을 디코딩하려고 하면 URIError: malformed URI sequence라는 오류가 발생한다는 것입니다. 이런 경우에는 예외 처리를 해주어야 합니다.

1
2
3
4
5
6
7
try {
  var decodedStr = decodeURIComponent(encodedStr);
} catch(e) {
  if (e instanceof URIError) {
    // 오류 처리 코드
  }
}

정리

escape 함수로 인코딩된 문자열을 디코딩하는 방법은 크게 두 가지입니다: unescape 함수를 사용하거나, 더 현대적인 decodeURIComponent 함수를 사용하는 것입니다. 어느 방법을 사용하든, 오류 처리를 잊지 말아야 합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.