>  기사  >  웹 프론트엔드  >  JavaScript encodeURI 및 encodeURIComponent_javascript 팁

JavaScript encodeURI 및 encodeURIComponent_javascript 팁

WBOY
WBOY원래의
2016-05-16 15:27:261561검색

encodeURI 및 encodeURIComponet 함수는 모두 JavaScript에서 URI를 인코딩하고 관련 매개변수를 UTF-8 인코딩 형식의 데이터로 변환하는 데 사용됩니다. URI가 위치 점프를 수행하면 매개변수에 포함된 중국어, 일본어 등 ASCII가 아닌 코드가 코드 변환됩니다.

이 두 기능의 기능은 비교적 유사하지만 몇 가지 차이점이 있습니다.

encodeURI: 인코딩되지 않는 문자는 82개입니다: !, #, $, &, ', (,), *, ,,,-,.,/,:,;,=,?,@, _,~,0-9,a-z,A-Z
encodeURIComponent: 인코딩되지 않는 71개의 문자가 있습니다: !, ', (,), *, -, ., _, ~, 0-9, a-z, A-Z

질문:

ajax.get( url '?k1'=v1 '&k2'=v2 '&k3'=v3, ... );

URL은 encodeURI로만 인코딩되므로 제출하려는 매개변수가 searchWord = a b인 경우 b가 됩니다.


해결책:


ajax.post( url, params,....)


 여기서 params는 객체입니다.


이유: 매개변수가 객체 또는 배열인 경우 구성 요소 라이브러리에 이미 encodeURIComponent가 있는 것입니다. 문자열만 사용하는 경우 구성 요소 라이브러리는 아무 작업도 수행하지 않으므로 특수 문자가 백엔드에 도달하면 필터링됩니다.


encodeURI() 사용법


 이 방법은 ASCII 문자와 숫자를 인코딩하지 않으며 다음 ASCII 구두점 문자도 인코딩하지 않습니다: - _ ~ * ' ( ) .


 이 방법의 목적은 URI를 완전히 인코딩하는 것이므로 encodeURI() 함수는 URI에서 특별한 의미를 갖는 다음 ASCII 구두점을 이스케이프하지 않습니다: ;/?:@&= $, #


팁: URI 구성 요소에 ? 및 #과 같은 구분 기호가 포함된 경우 encodeURIComponent() 메서드를 사용하여 각 구성 요소를 별도로 인코딩해야 합니다.


예:

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />") 
document.write(encodeURI("http://www.w3school.com.cn/My first/")) 
document.write(encodeURI(",/&#63;:@&=+$#")) 
//批注:只转换域名后面的部分,并且对,/&#63;:@&=+$#不处理。 
// http://www.w3school.com.cn 
// http://www.w3school.com.cn/My%20first/ 
// ,/&#63;:@&=+$#  

 decodeURI() 함수는 encodeURI() 함수로 인코딩된 URI를 디코딩할 수 있습니다.


 

encodeURIComponent() 사용법

 이 방법은 ASCII 문자 및 숫자를 인코딩하지 않으며 다음 ASCII 구두점 문자도 인코딩하지 않습니다: - _ ~ * ' ( ) .


기타 문자(예: URI 구성 요소를 구분하는 데 사용되는 문장 부호인 ::/?:@&= $,#)는 하나 이상의 16진수 이스케이프 시퀀스로 대체됩니다.


팁: encodeURIComponent() 함수는 매개 변수가 URI(예: 프로토콜, 호스트 이름, 경로 또는 쿼리 문자열)의 일부라고 가정한다는 점에서 encodeURI() 함수와 다릅니다. 따라서 encodeURIComponent() 함수는 URI 부분을 구분하는 데 사용되는 구두점 문자를 이스케이프합니다.


예:

document.write(encodeURIComponent("http://www.w3school.com.cn")) 
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) 
document.write(encodeURIComponent(",/&#63;:@&=+$#")) 
//对比 
// http%3A%2F%2Fwww.w3school.com.cn 
// http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F 
// %2C%2F%3F%3A%40%26%3D%2B%24%23  
 decodeURIComponent() 함수는 encodeURIComponent() 함수로 인코딩된 URI를 디코딩할 수 있습니다.


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