사람들이 JS를 사용하여 데이터를 제출할 때, 특히 중국어를 사용할 때 제출할 문자열을 URL 인코딩해야 하는 경우가 많습니다. JS, encodeURI, encodeURIComponent 및 escape에서 문자열을 URL 인코딩하는 방법에는 여러 가지가 있습니다. 제가 본 많은 코드에서는 escape 함수를 가장 많이 사용하는데, 이 함수는 권장하지 않습니다. 다음 기능을 별도로 살펴보겠습니다.
encodeURI: 지정된 문자열을 URL 인코딩합니다. 단, 다음 URL에서는 # / = & 키 문자를 제외합니다.
encodeURIComponent: URL의 특수 문자를 포함하여 문자열의 문자를 인코딩합니다.
escape: 이것은 JS 함수의 비교적 초기 버전입니다. 이 함수에서 유니코드 문자를 처리할 때 몇 가지 문제가 있습니다.
코드는 다음과 같습니다.
var url = "http: //www.abc.com?q=aa& amp;b=haha";
var encodeURI(url)
alert(encodedUrl); /www.abc.com ?q=aa&b=hehe
encodedUrl = encodeURIComponent(url);
alert(encodedUrl); //출력: http:/// /www.abc.com?q=aa&b= ㅎㅎ
alert(escape( url)); //출력: http://www.abc.com?q=aa&b=%u5475%u5475
위와 같이 중국어를 처리할 때 이스케이프 함수의 문자는 %uxxxx 형식으로 변환됩니다. 이는 분명히 URL 인코딩 형식과 다르며, encodeURIComponent 함수 인코딩이 가장 철저합니다. 특별한 필요가 없으면 encodeURIComponent 함수가 더 일반적입니다. 물론 이스케이프를 사용하면 사용할 수 없을 수도 있습니다. 문제가 무엇입니까? 아마도 서버 측 언어에서 정상적으로 구문 분석할 수 있지만 이 함수는 유니코드 문자를 처리할 때 표준이 아니므로 권장됩니다. encodeURIComponent 및 decodeURIComponent 함수를 사용하여 문자열을 URL 인코딩 및 디코딩합니다.