이 세 가지 방법의 차이점을 다룬 기사가 너무 많지만 대부분 매우 복잡합니다. 이 글에서는 이 세 가지 방법을 실용적인 관점에서 설명하려고 합니다.
2. Escape는 동일한 카테고리가 아닙니다.
간단히 말해서 Escape는 문자열을 인코딩하고(다른 두 개는 URL을 인코딩함) 해당 기능은 모든 컴퓨터에서 문자열을 읽을 수 있도록 하는 것입니다.
인코딩 후 결과는 %XX 또는 %uXXXX 형식입니다.
그 중 ASCII 문자, 숫자, @*/+ , 이 문자 는 인코딩되지 않으며 나머지는 인코딩됩니다.
가장 중요한 점은 URL을 인코딩해야 할 때 이 방법을 잊어버리세요. 이 방법은 문자열에 사용되며 URL에는 적합하지 않습니다.
사실 이 방법은 실제 업무에서 사용해본 적이 없어서 자세히 설명하지는 않겠습니다.
URL을 인코딩하는 것이 일반적이므로 실제로 이 두 가지 방법에 특별한 주의를 기울여야 합니다.
둘 모두 인코딩된 URL입니다. 유일한 차이점은 인코딩된 문자 범위입니다. 그중
encodeURI 메서드는 다음 문자 ASCII 문자, 숫자, ~!@#$&*()를 인코딩하지 않습니다. =:/, ;?+'encodeURIComponent 메소드
는 다음 문자 ASCII 문자, 숫자, ~!*()'를 인코딩하지 않으므로 encodeURIComponent는 encodeURI보다 더 넓은 인코딩 범위를 갖습니다.
실제 예에서 encodeURIComponent는 http://를 http%3A%2F%2F로 인코딩하지만 encodeURI는 그렇지 않습니다.
4. 가장 중요한 것은 어떤 상황에서 어떤 방법을 사용해야 할까요?
1. 인코딩된 문자열일 뿐이고 URL과 관련이 없는 경우 이스케이프를 사용하세요.
2. 전체 URL을 인코딩한 후 이 URL을 사용해야 하는 경우 encodeURI를 사용하세요.
예를 들어
encodeURI("http://www.cnblogs.com/season-huang/some other thing");는 인코딩 후에
"http://www.cnblogs.com/season-huang/some%20other%20thing";
가 됩니다. 그 중 공백은 %20으로 인코딩됩니다. 그런데 encodeURIComponent를 사용하면 결과는
"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"가 됩니다. 차이점이 보이시나요? "/"까지 인코딩되어 전체 URL을 더 이상 사용할 수 없습니다
.
3. URL에서 매개변수를 인코딩해야 하는 경우 encodeURIComponent가 가장 좋은 방법입니다.var param = "http://www.cnblogs.com/season-huang/"; //param为参数param = encodeURIComponent(param);var url = "http://www.cnblogs.com?next=" + param;
console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"
보니, 매개변수의 "/"가 인코딩될 수 있다고 합니다. encodeURI를 사용하면 다음의 /를 인코딩해야 하기 때문에 반드시 문제가 발생합니다.
위 내용은 이스케이프, encodeURI 및 encodeURIComponent를 구별하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!