> 웹 프론트엔드 > JS 튜토리얼 > Escape, encodeURI 또는 ​​encodeURIComponent: 쿼리 문자열 인코딩에 어느 것을 사용해야 합니까?

Escape, encodeURI 또는 ​​encodeURIComponent: 쿼리 문자열 인코딩에 어느 것을 사용해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-11 02:12:09
원래의
184명이 탐색했습니다.

Escape, encodeURI, or encodeURIComponent: When to Use Which for Query String Encoding?

쿼리 문자열 인코딩을 위해 Escape, encodeURI 또는 ​​encodeURIComponent를 사용하는 경우

쿼리 문자열을 웹 서버로 보내는 맥락에서 적절한 인코딩 방법은 다음에 따라 다릅니다. 특정 인코딩 요구 사항.

escape()

escape() 함수는 다음과 같습니다. ECMAScript 사양에서는 더 이상 사용되지 않으므로 사용하지 마세요. @, _, *, , -를 제외한 모든 특수 문자를 인코딩합니다.

encodeURI()

기능적인 URL이 필요한 경우 encodeURI()를 사용하세요. URL용으로 특별히 예약된 문자를 제외한 모든 문자를 인코딩합니다. 이러한 예약 문자에는 /, &, ?, : 및 @가 포함됩니다.

encodeURIComponent()

URL 매개변수의 값을 인코딩하려면 encodeURIComponent()를 사용하세요. 예약되지 않은 것으로 명시적으로 지정된 문자를 제외한 모든 문자를 인코딩합니다. 예약되지 않은 문자에는 /, ?, : 및 @가 포함됩니다.

예:

다음 쿼리 문자열을 인코딩하려면:

http://www.example.org/a file with spaces.html
로그인 후 복사

You encodeURI()를 사용하여 다음 인코딩된 결과를 얻습니다. URL:

http://www.example.org/a%20file%20with%20spaces.html
로그인 후 복사

그러나 쿼리 문자열 내의 매개변수 값을 인코딩하려면 encodeURIComponent()를 사용합니다.

var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
로그인 후 복사

결과로 인코딩된 매개변수 값은 다음과 같습니다. 그런 다음 기본 URL에 추가되어 전체 URL을 형성합니다.

var url = "http://example.net/?param1=" + p1 + "&param2=99"
로그인 후 복사

이렇게 하면 다음과 같이 완전히 인코딩됩니다. URL:

http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55&param2=99
로그인 후 복사

encodeURIComponent()는 ' 문자를 인코딩하지 않으므로 HTML 속성을 구성할 때 제대로 처리하지 않으면 보안 취약점이 발생할 수 있다는 점에 유의하는 것이 중요합니다.

위 내용은 Escape, encodeURI 또는 ​​encodeURIComponent: 쿼리 문자열 인코딩에 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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