>웹 프론트엔드 >JS 튜토리얼 >javascript encodeURI와 encodeURIComponent_javascript 기술 비교

javascript encodeURI와 encodeURIComponent_javascript 기술 비교

WBOY
WBOY원래의
2016-05-16 18:30:151422검색
배경
encodeURI와 encodeURIComponent는 모두 ECMA-262 표준에 정의된 함수입니다(예: JavaScript, ActionScript). 둘 다 URI(RFC-2396) 문자열을 인코딩하는 데 사용되는 전역 함수이지만 처리 방법과 사용 시나리오가 다릅니다. 차이점을 설명하려면 먼저 RFC-2396
예약 문자에서 URI의 문자 분류를 이해해야 합니다. 이러한 문자는 URI의 예약된 키 문자이며 URI의 다양한 부분을 구분하는 데 사용됩니다. . 다음 문자는 다음과 같습니다. ":" | "&" | 문자 유형은 RFC-2396에 특별히 정의되어 있지만 그 용도에 대한 특별한 설명은 없습니다. 다른 RFC 표준과 관련이 있을 수 있습니다. "-" | "_" | "." | "'" | "(" | ")"
클래스 문자는 URI의 주요 부분으로 대문자, 소문자 및 숫자를 모두 포함합니다
위의 세 가지 유형의 문자열을 소개한 후 encodeURI와 encodeURIComponent 함수의 차이점을 설명하는 것은 매우 쉽습니다.
encodeURI: 이 함수는 전달된 문자열에서 모든 비(기본 문자, 표시 문자 및 예약 문자)에 대해 이스케이프를 수행합니다. 이스케이프해야 하는 모든 문자는 UTF-8 인코딩에 따라 1바이트, 2바이트 또는 3바이트 16진수 이스케이프 문자(%xx)로 변환됩니다. 예를 들어, 문자 공백 " "은 " "로 변환됩니다. 이 인코딩 모드에서는 인코딩해야 하는 ASCII 문자가 1바이트 이스케이프 문자로 대체되고, u0080과 u007ff 사이의 문자가 2바이트 이스케이프 문자로 대체되며, 나머지 16개의 유니코드 문자는 3바이트로 대체됩니다. encodeURIComponent: 이 함수의 처리 방법과 encodeURI 사이에는 단 하나의 차이점이 있습니다. 즉, 예약된 문자에 대해서도 이스케이프 인코딩이 수행됩니다. 예를 들어 문자 ":"는
대신 문자 ":"로 이스케이프됩니다. 위에서 두 가지 다른 함수가 있는 이유는 JS 코드를 작성할 때 URI에 대한 두 가지 다른 인코딩 처리 요구 사항이 있기 때문입니다. encodeURI는 전체 URI 문자열을 인코딩하는 데 사용할 수 있습니다. encodeURIComponent는 URI의 일부를 인코딩하여 이 부분에 일부 URI 예약 문자가 포함될 수 있습니다. 이것은 일상적인 프로그래밍에 매우 유용합니다. 예를 들어 다음 URI 문자열은 다음과 같습니다.
http://www.mysite.com/send-to-friend.aspx?url=http://www.mysite.com/product.html
이 URI에서 문자열 입력. send-to-friend.aspx 페이지는 링크를 포함하는 HTML 형식의 이메일 콘텐츠를 생성합니다. 이 링크의 주소는 위 URI 문자열의 URL 값입니다. 분명히 위의 URL 값은 URI 예약 키 문자를 포함하는 URI의 일부입니다. 사용하기 전에 encodeURIComponent를 호출하여 인코딩해야 합니다. 그렇지 않으면 위의 URI 문자열이 브라우저에서 잘못된 URI로 간주됩니다. 올바른 URI는 다음과 같아야 합니다.
http://www.mysite.com/send-to-friend.aspx?url=http://www.mysite.com/product.html


encodeURI

var uri="my test .asp?name=ståle&car=saab";
document.write(encodeURI(uri))


위 출력은 다음과 같습니다.
my test. asp?name=ståle&car=saab


encodeURIComponent

var uri="http://jb51.net/my test.asp?name=ståle&car=saab"
document.write(encodeURIComponent(uri))


위 출력은 다음과 같습니다.
http://jb51.net/my test.asp?name=ståle&car=saab
기타
ECMA-262 표준에서는 디코드 이 두 인코딩 함수에 해당하는 전역 함수도 정의되어 있으며 decodeURI 및 decodeURIComponent입니다. 이를 사용하여 인코딩된 문자열을 디코딩할 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.