JavaScript에는 문자열을 인코딩할 수 있는 세 가지 함수, 즉 escape, encodeURI, encodeURIComponent 및 해당하는 세 가지 디코딩 함수가 있습니다.
이스케이프 해제,decodeURI,decodeURIComponent.
다음은 차이점을 간략하게 소개합니다
escaping() 함수 1개
정의 및 사용법
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개의 escape()
<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("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
매개변수도 URL이므로 URL에 매개변수를 인코딩합니다. 인코딩하지 않으면 전체 URL의 점프에 영향을 미칩니다.