디코딩(Decoding)
자바스크립트에서 인코딩된 문자열을 디코딩할 때는 unescape() 메서드를 사용합니다. 이 메서드는 escape() 메서드로 인코딩된 문자열을 입력받아 원래 상태로 되돌려 줍니다. 즉, 문자열에 포함된 16진수 문자들이 unescape() 메서드를 통해 각각이 나타내는 실제 문자로 치환됩니다.
문법
unescape(string)
예제
다음 예제에서는 두 개의 느낌표(!!)가 먼저 escape() 메서드를 사용해 16진수 문자로 변환되었습니다. 그 후 unescape() 메서드를 사용하여 다시 원래의 자연스러운 문자로 디코딩됩니다.
<html>
<body>
<script type="text/javascript">
// 특수 문자를 escape 함수로 인코딩
var str = escape("Tutorialspoint!!");
document.write("</br>");
document.write("Encoded : " + str);
// unescape() 함수로 디코딩
document.write("Decoded : " + unescape(str))
</script>
</body>
</html>출력 결과
Encoded : Tutorialspoint%21%21 Decoded : Tutorialspoint!!
여기에는 한 가지 예외가 있습니다. 바로 마침표(. )와 @ 기호는 16진수 문자로 변환되지 않는다는 점입니다. 예를 들어 아래 코드에서 escape() 메서드를 사용하면 .(마침표)와 @를 제외한 모든 문자만 16진수 형태로 변환됩니다.
예제
<html>
<body>
<script type="text/javascript">
str = escape("My gmail address is robbinhood@rocketmail.com")
document.write("Encoded : " + str);
document.write("</br>");
// unescape() 함수로 디코딩
document.write("Decoded : " + unescape(str))
</script>
</body>
</html>출력 결과
Encoded : My%20gmail%20address%20is%20robbinhood@rocketmail.com Decoded : My gmail address is robbinhood@rocketmail.com
참고: 최신 자바스크립트에서의 권장 사항
escape()와 unescape() 함수는 과거부터 널리 사용되어 왔지만, 현재는 표준에서 폐기(deprecated)된 상태이므로 새로운 프로젝트에서는 사용하지 않는 것이 좋습니다. 대신 URI 인코딩 규격을 준수하는 encodeURIComponent()와 decodeURIComponent()를 사용하는 것이 권장됩니다. 이 함수들은 한글을 포함한 유니코드 문자도 안전하게 처리할 수 있다는 장점이 있습니다.