Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트(JavaScript)에서 인코딩된 문자열을 디코딩하는 방법

디코딩(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()를 사용하는 것이 권장됩니다. 이 함수들은 한글을 포함한 유니코드 문자도 안전하게 처리할 수 있다는 장점이 있습니다.