>  기사  >  웹 프론트엔드  >  자바스크립트는 URL 트랜스코딩 및 디코딩을 어떻게 구현합니까?

자바스크립트는 URL 트랜스코딩 및 디코딩을 어떻게 구현합니까?

不言
不言원래의
2018-09-14 17:48:046271검색

이 기사는 JavaScript가 URL 트랜스코딩 및 디코딩을 구현하는 방법에 대해 설명합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. escape 및 unescape

escape()는 URL 인코딩에 직접 사용할 수 없습니다. 실제 기능은 문자의 유니코드 인코딩 값을 반환하는 것입니다.

유니코드 문자 세트를 사용하여 0-255를 제외한 지정된 문자열을 인코딩합니다. 모든 공백, 문장 부호, 특수 문자 및 기타 관련 비ASCII 문자는 %xx 형식의 문자 인코딩으로 변환됩니다(xx는 문자 세트 테이블에 있는 문자 인코딩의 16진수와 같습니다). 예를 들어 공백 문자에 해당하는 인코딩은 %20입니다.
Escape는 *, +, -, ., /, @, _, 0-9, a-z, A-Z 등 69자를 인코딩하지 않습니다.

escape() 함수는 js에서 문자열을 인코딩하는 데 사용되며 일반적으로 사용되지 않습니다.

코딩:

escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')

결과: "http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

escape('张')

결과: "%u5F20"

디코딩:

unescape("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

결과: "http://www.baidu.com?name=zhang@xiao@jie&order=1"

unescape("%u5F20")

결과: "Zhang"

2. decodeURI

UTF-8 인코딩 형식을 사용하여 URI 문자열을 다양한 이스케이프 문자열로 변환합니다.
encodeURI에는 82개의 인코딩되지 않은 문자가 있습니다: !, #, $, &, ', (,), *, +,,, -,.,/,:,;,=,?,@,_,~,0 -9, a-z, A-Z

encodeURI()는 전체 URL을 인코딩하는 데 사용됩니다

인코딩:

encodeURI('http://www.baidu.com?name=zhang@xiao@jie&order=1')

결과: "http://www.baidu.com?name=zhang@xiao@jie&order=1"

디코딩:

decodeURI("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

결과: "http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

3. encodeURIComponent 및 decodeURIComponent

encodeURI()와의 차이점은 다음과 같습니다. URL의 구성요소는 전체 URL을 인코딩하는 대신 개별적으로 인코딩됩니다.

그러므로 "; / ? : @ & = + $ , #", encodeURI()로 인코딩되지 않은 이러한 기호는 모두 encodeURIComponent()로 인코딩됩니다. 구체적인 인코딩 방법은 둘 다 동일합니다. UTF-8 인코딩 형식 문자열을 사용하여 URI 문자열을 이스케이프 형식으로 변환합니다.

encodeURIComponent()는 매개변수를 전달하는 데 사용됩니다. 특수 문자가 포함된 매개변수는 중단을 유발할 수 있습니다.

encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')

결과: "http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%. 40xiao%40jie%26order %3D1"


디코딩:

decodeURIComponent("http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")

결과: "http://www.baidu.com?name=zhang@xiao@jie&order=1"

요약:

escape()를 직접 사용할 수 없습니다. URL에 사용됩니다. 인코딩의 실제 기능은 문자의 유니코드 인코딩 값을 반환하는 것입니다. 예를 들어 "봄 축제"의 반환 결과는 %u6625%u8282이며, escape()는 "+"를 인코딩하지 않습니다

주로 중국어에 사용됩니다.

encodeURI()는 실제로 URL을 인코딩하는 데 사용되는 함수입니다.

전체 URL 주소를 인코딩하지만 특별한 의미를 인코딩하지는 않습니다. 기호 "; / ? : @ & = + $, #". 해당 디코딩 함수는 decodeURI()입니다.


encodeURIComponent()

는 이러한 특수 문자 "; / ? : @ & = + $, #을 인코딩할 수 있습니다. ". 해당 디코딩 함수는


인 것 같아요. 앰퍼샌드로 URL을 전달하려면 encodeURIComponent()

를 사용하세요.

위 내용은 자바스크립트는 URL 트랜스코딩 및 디코딩을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.