JavaScript에는 문자열을 인코딩할 수 있는 세 가지 함수, 즉 escape, encodeURI, encodeURIComponent와 해당하는 세 가지 디코딩 함수인 unescape, decodeURI, decodeURIComponent가 있습니다.
다음은 차이점에 대한 간략한 소개입니다.
1 escape() 함수
정의 및 사용법
escape() 함수는 모든 컴퓨터에서 읽을 수 있도록 문자열을 인코딩합니다.
문법
escape(문자열)
매개변수 설명
문자열 필수입니다. 이스케이프하거나 인코딩할 문자열입니다.
반환값
인코딩된 문자열의 복사본입니다. 이러한 문자 중 일부는 16진수 이스케이프 시퀀스로 대체됩니다.
설명
이 방법은 ASCII 문자와 숫자를 인코딩하지 않으며 다음 ASCII 구두점 문자도 인코딩하지 않습니다: - _ ~ * ' ( ) . 다른 모든 문자는 이스케이프 시퀀스로 대체됩니다.
2 encodeURI() 함수
정의 및 사용법
encodeURI() 함수는 문자열을 URI로 인코딩합니다.
문법
encodeURI(URIstring)
매개변수 설명
URI문자열이 필요합니다. 인코딩할 URI 또는 기타 텍스트가 포함된 문자열입니다.
반환값
일부 문자가 16진수 이스케이프 시퀀스로 대체된 URIstring의 복사본입니다.
설명
이 방법은 ASCII 문자와 숫자를 인코딩하지 않으며 다음 ASCII 구두점 문자도 인코딩하지 않습니다: - _ ~ * ' ( ) .
이 방법의 목적은 URI를 완전히 인코딩하는 것이므로 encodeURI() 함수는 URI에서 특별한 의미를 갖는 다음 ASCII 구두점을 이스케이프하지 않습니다. ;/?:@&= $, #
3 encodeURIComponent() 함수
정의 및 사용법
encodeURIComponent() 함수는 문자열을 URI 구성 요소로 인코딩합니다.
문법
encodeURIComponent(URIstring)
매개변수 설명
URI문자열이 필요합니다. 인코딩할 URI 구성 요소 또는 기타 텍스트가 포함된 문자열입니다.
반환값
일부 문자가 16진수 이스케이프 시퀀스로 대체된 URIstring의 복사본입니다.
설명
이 방법은 ASCII 문자와 숫자를 인코딩하지 않으며 다음 ASCII 구두점 문자도 인코딩하지 않습니다: - _ ~ * ' ( ) .
기타 문자(예: URI 구성 요소를 구분하는 데 사용되는 문장 부호인 ::/?:@&= $,#)는 하나 이상의 16진수 이스케이프 시퀀스로 대체됩니다.
팁 및 참고사항
팁: encodeURIComponent() 함수는 인수가 URI(예: 프로토콜, 호스트 이름, 경로 또는 쿼리 문자열)의 일부라고 가정한다는 점에서 encodeURI() 함수와 다릅니다. 따라서 encodeURIComponent() 함수는 URI 부분을 구분하는 데 사용되는 구두점 문자를 이스케이프합니다.
4 요약:
세 가지 함수 분석을 통해 escape()는 ASCII 문자, 숫자 및 특정 기호를 제외한 모든 수신 문자열을 이스케이프한다는 것을 알 수 있습니다. 따라서 URL을 인코딩하려면 이 방법을 사용하지 않는 것이 가장 좋습니다. 방법. 그리고 encodeURI()는 URI의 합법적인 문자가 인코딩 및 변환되지 않기 때문에 전체 URI를 인코딩하는 데 사용됩니다. encodeURIComponent 메소드는 단일 URIComponent(요청 매개변수 참조)를 인코딩할 때 가장 일반적으로 사용되어야 합니다. 이는 전체 URL에 영향을 주지 않고 매개변수의 중국어 및 특수 문자를 이스케이프할 수 있습니다.
5 예:
1개의 탈출()
<script type="text/javascript"> document.write(escape("http://www.w3school.com.cn/") + "<br />") document.write(escape("?!=()#%&")) </script>
출력:
http%3A//www.w3school.com.cn %3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />") document.write(encodeURI("http://www.w3school.com.cn/My first/")) document.write(encodeURI(",/?:@&=+$#")) </script>
출력:
http://www.w3school.com.cn/ http://www.w3school.com.cn/My%20first/ ,/?:@&=+$#
전체 URL을 인코딩하지만 URL별 식별자는 트랜스코딩되지 않습니다.
3 encodeURIComponent()
예 1:
<script type="text/javascript"> document.write(encodeURIComponent("http://www.w3school.com.cn/")) document.write("<br />") document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write("<br />") document.write(encodeURIComponent(",/?:@&=+$#")) </script>
출력:
http%3A%2F%2Fwww.w3school.com.cn http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23
예 2:
<script language="javascript">document.write(' <a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">退出</a>');</script>
매개변수도 URL이므로 URL에 매개변수를 인코딩합니다. 인코딩하지 않으면 전체 URL의 점프에 영향을 미칩니다.