escape(), encodeURI(), encodeURIComponent()_javascript 스킬의 차이점과 예시에 대한 심층 분석

WBOY
풀어 주다: 2016-05-16 16:40:23
원래의
1122명이 탐색했습니다.

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("&#63;!=()#%&"))
</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(",/&#63;:@&=+$#"))
</script>
로그인 후 복사

출력:

http://www.w3school.com.cn/

http://www.w3school.com.cn/My%20first/

,/&#63;:@&=+$#

로그인 후 복사

전체 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(",/&#63;:@&=+$#"))
</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/&#63;logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">退出</a>');</script>
로그인 후 복사

매개변수도 URL이므로 URL에 매개변수를 인코딩합니다. 인코딩하지 않으면 전체 URL의 점프에 영향을 미칩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿