쿼리 문자열을 웹 서버로 보내는 맥락에서 적절한 인코딩 방법은 다음에 따라 다릅니다. 특정 인코딩 요구 사항.
escape() 함수는 다음과 같습니다. ECMAScript 사양에서는 더 이상 사용되지 않으므로 사용하지 마세요. @, _, *, , -를 제외한 모든 특수 문자를 인코딩합니다.
기능적인 URL이 필요한 경우 encodeURI()를 사용하세요. URL용으로 특별히 예약된 문자를 제외한 모든 문자를 인코딩합니다. 이러한 예약 문자에는 /, &, ?, : 및 @가 포함됩니다.
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 + "¶m2=99"
이렇게 하면 다음과 같이 완전히 인코딩됩니다. URL:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
encodeURIComponent()는 ' 문자를 인코딩하지 않으므로 HTML 속성을 구성할 때 제대로 처리하지 않으면 보안 취약점이 발생할 수 있다는 점에 유의하는 것이 중요합니다.
위 내용은 Escape, encodeURI 또는 encodeURIComponent: 쿼리 문자열 인코딩에 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!