fairworld's life

[자바스크립트] escape()와 unescape() 본문

Computer Life/Programming Life

[자바스크립트] escape()와 unescape()

fairworld 2008. 2. 21. 20:43
escape(jsString)
인수
escape : (엔코딩 기능함수)
필수적인 인수로 최상위 내장 기능함수이다.
jsString : (엔코딩할 문자열)
엔코딩할 문자열의 개체이거나 문자열이다.
설명

unescape() 기능함수와 같이 보면 쉽게 이해될 것이다.

escape() 기능함수는 문자열을 네트워크를 통하여 누구나 ASCII 글자로 접속할 수 있도록 엔코딩한다.

아래 ASCII 69개의 글자는 escape()하나 unescape()하나 아무 변화가 없으나, 그 이외의 글자는 모두 엔코딩하여야 다른 사용자가 널리 사용할 수 있기 때문이다. ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890 @*-_+./

 

모든 다른 문자들은 escape() 기능함수로 엔코딩 표준에 따라서 16진수 2 디짓(%xx)이나 4 디짓(%uxxxx) 데이터로 전환하여야 한다. 예를 들어 빈칸(' ')은 %20, 세미콜론(;)은 %3B, '한글'은 ' %uD55C%uAE00'이 된다.

escape() 기능함수로 엔코딩 된 데이터는 unescape() 기능함수로 원래 상태로 디코딩하게 된다.

특기

escape()unescape() 기능함수는 자체가 메서드 역할을 하므로 어떤 object에서도 method와 연관되지 않는다.
문자열등 String 개체에서는 이들 기능함수들은 전역 기능성 메서드로 사용된다.

escape()unescape() 메서드는 URI(Uniform Resource Identifiers)를 인코딩하는 데는 사용할 수 없으므로, 대신 encodeURI, decodeURIencodeURIComponent, decodeURIComponent 메서드를 사용한다.

 
unescape 기능함수

엔코딩(encoding) 된 데이터를 디코딩(decoding)한다.

unescape(encodedString)
인수
unescape : (디코딩 기능함수)
필수적인 인수로 최상위 내장 기능함수이다.
encodedString : (디코딩할 문자열)

디코딩(decoding)할 엔코딩된 문자열의 개체이거나 문자열이다.

encodedString (엔코딩된 문자열)

"%integer" 정수(integer) 0 - 255 (decimal)
"hex" 16진수(hex) 0x0 - 0xFF (hexadecimal)

설명

escape() 기능함수와 같이 보면 쉽게 이해될 것이다.

escape() 기능함수는 문자열을 네트워크를 통하여 누구나 ASCII 글자로 접속할 수 있도록 엔코딩한다.

아래 ASCII 69개의 글자는 escape()하나 unescape()하나 아무 변화가 없으나, 그 이외의 글자들은 모두 엔코딩하여야 다른 사용자가 널리 사용할 수 있기 때문이다.

ABCDEFGHIJKLMNOPQRSTUVWXYZ 
abcdefghijklmnopqrstuvwxyz 
1234567890 @*-_+./ 

엔코드된 문자열을 순서대로 엔코딩 기준에 따라 Latin-1 글자에 상응하는 2디짓(%xx) 혹은 4디짓(%uxxxx) 16진수 글자로 환원한다. 예를 들어 %20을 공간 문자(' ')로, 세미콜론(';')%3B을 세미콜론(';')으로, '%uD55C%uAE00'을 ' 한글'로 만들어 준다. escape()의 반대이다.

escape() 기능함수로 엔코딩 된 데이터는 이 unescape() 기능함수로 디코딩하면 원상태의 문자열이 된다.

특기

escape()unescape() 기능함수는 자체가 메서드 역할을 하므로 어떤 object에서도 method와 연관되지 않는다.
문자열등 String 개체에서는 이들 기능함수들은 전역 기능성 메서드로 사용된다.

escape()unescape() 메서드는 URI(Uniform Resource Identifiers)를 인코딩하는 데는 사용할 수 없으므로, 대신 encodeURI, decodeURIencodeURIComponent, decodeURIComponent 메서드를 사용한다.

escape
설명
String 개체를 모든 컴퓨터에서 읽을 수 있도록 인코딩합니다.
usescape

설명

escape 메서드로 인코딩한 String 개체를 디코딩합니다.
테스트.

var str="Aa?ㄱ음/:\n\r";를 돌린것.


idx 문자 escape unescape unescape(escape) charCode encodeURI decodeURI
0 A A A A 65 A A
1 a a a a 97 a a
2 ? %3F ? ? 63 ? ?
3 %u3131 12593 %E3%84%B1
4 %uC74C 51020 %EC%9D%8C
5 / / / / 47 / /
6 : %3A : : 58 : :
7 %0A 10 %0A
8 %0D 13 %0D


 

결론

 

즉 escap는 인코딩하고 descape로 디코딩을 한다.

근데 이녀석들은 URI는 인코딩하지 못하므로 encodeURI 와 decodeURI를 이용한다.

또한 encodeURI는 ":", "/", ";", "?" 문자들은 encoding하지 못하기 때문에 만약 저 문자들까지

전부 encoding 할려고 하면 encodeURIComponent 를 이용하고 decodeURIComponent를 이용한다.



Ex) 자바스크립트에서 만약 /n이나 /r이(즉 개행문자)포함되어 있으면 종결되지 않은 문자열 상수입니다.는 스크립트 오류가 뜬다. 그러므로 그런 문자들은 걸러줘야 한다.


for (var i=0;  i < szName.length; i++)
{
 if ( escape( szName.charAt(i))!= "%0D" && escape( szName.charAt(i))!= "%0A")
 {
 szTemp = szTemp + szName.charAt(i);
 }
}



출처

 

1. 설명 - http://koxo.com/lang/js/function/escape.html

 

2. 예제는  네이버지식인

http://kin.naver.com/db/detail.php?d1id=1&dir_id=10105&eid=kqcaIH475j63eTbnaC35xgLS3kRnr/0G 

 

3. MSDN에 나온 encodeURI Method

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/17bab5a2-bcd4-46c2-8b52-b2b5a0ed98a3.asp

 

4. AJAX에서 한글 처리관련

http://blog.naver.com/jinoxst.do?Redirect=Log&logNo=140021758690

5. Tong - ican님의 프로그래밍팁통


escape() 기능함수로 간단한 엔코딩 예제

1) aA1%20*
2) abcdeABCDE12345
3) Miss%20Kim.%20How%20are%20you%3F
4) %7E%21@%23%24%25%5E%26*%28%29_+%7C%7B%7D%3A%3C%3E%3F
5) %uC624%uB298%uC740%20%uD55C%uAE00%uB0A0
6) %20a%20b%20c%20d%20e%20f%20g

unescape() 기능함수를 사용하면 원래 상태로돌아온다.

<SCRIPT> 
document.write("1) "+escape("aA1 *")+"<BR>"); 
document.write("2) "+escape("abcdeABCDE12345")+"<BR>"); 
document.write("3) "+escape("Miss Kim. How are you?")+"<BR>"; 
document.write("4) "+escape("~!@#$%^&*()_+|{}:<>?")+"<BR>"; 
document.write("5) "+escape("오늘은 한글날")+"<BR>"; 
document.write("6) "+escape(" a b c d e f g")+"<BR>"); 
</SCRIPT> 

escape() 기능함수로 엔코딩한 것을 다시 unescape() 기능함수로 디코딩하는 예제

1) aA1 *
2) abcdeABCDE12345
3) Miss Kim. How are you?
4) ~!@#$%^&*()_+|{}:<>?
5) 오늘은 한글날
6) a b c d e f g

escape() 기능함수를 사용하면 원래 상태로 돌아온다.

<SCRIPT> document.write("1) "+unescape("aA1%20*")+"<BR>"); 
document.write("2) "+unescape("abcdeABCDE12345")+"<BR>"); 
document.write("3) "+unescape("Miss%20Kim.%20How%20are%20you%3F")+"<BR>"); 
document.write("4) "+unescape("~!@#$%^&*()_+|{}:<>?")+"<BR>");