>  기사  >  웹 프론트엔드  >  encodeURI, encodeURIComponent 및 escape_javascript 기술의 차이점과 적용에 대해 이야기합니다.

encodeURI, encodeURIComponent 및 escape_javascript 기술의 차이점과 적용에 대해 이야기합니다.

WBOY
WBOY원래의
2016-05-16 15:30:061577검색

우선 이 세 가지가 인코딩에 사용된다는 것은 모두 알고 있습니다. encodeURI()와 encodeURIComponent()에 대해 이야기해 보겠습니다. 이 두 가지는 URL을 변환할 때 인코딩과 디코딩에 사용됩니다.

인코딩이 있으면 디코딩은 decodeURI() 및 decodeURIComponent()입니다. 용도는 매우 간단합니다. 목적을 달성하려면 트랜스코딩할 텍스트를 매개변수로 가져오면 됩니다.

예:

encodeURI("내가 인코딩할 텍스트입니다.")
decodeURI("내가 디코딩할 텍스트입니다.")
encodeURIComponent("인코딩할 텍스트입니다.")
decodeURIComponent("내가 디코딩할 텍스트입니다.")

encodeURI()와 encodeURIComponent()의 차이는 실제로 크지 않습니다

주요 차이점은 다음과 같습니다.

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

encodeURIComponent에는 71개의 인코딩되지 않은 문자가 있습니다: !, ', (,), *, -, ., _, ~, 0-9, a-z, A-Z

encodeURI는 주소 표시줄에 직접 값을 할당할 때 주로 사용됩니다.

location.href=encodeURI("http://www.cnblogs.com/Tezml/");

그리고 encodeURIComponent는 주로 URL의 쿼리 매개변수에 사용됩니다.

location.href="http://www.cnblogs.com/Tezml/test.php?a=" encodeURIComponent("나는 나다") ​​

그리고 탈출은 위의 두 가지와는 다릅니다

escape()는 인코딩 중, unescape()는 디코딩 중 ;

탈출 방법

모든 컴퓨터에서 읽을 수 있도록 문자열 개체를 인코딩합니다.

이스케이프(charString)


필수 charstring 매개변수는 인코딩할 문자열 객체 또는 리터럴입니다.

설명


Escape 메소드는 charstring의 내용이 포함된 문자열 값(유니코드 형식)을 반환합니다. 모든 공백, 구두점, 악센트 및 기타 비ASCII 문자는 %xx 인코딩으로 대체됩니다.

여기서 xx는 문자를 나타내는 16진수와 같습니다. 예를 들어 공백은 " "로 반환됩니다.

255자보다 큰 문자 값은 %uxxxx 형식으로 저장됩니다.

Escape로 인코딩되지 않은 문자는 69개입니다: *, ,-,.,/,@,_,0-9,a-z,A-Z

URI(Uniform Resource Identifier)를 인코딩하는 데 이스케이프 메서드를 사용할 수 없습니다. encodeURI 및 encodeURIComponent 메소드를 사용하여 인코딩해야 합니다.

인코딩 및 디코딩에 관한 마지막 데모

<!DOCTYPE html>
<html>
 <head>
 <title>Tezml_编码解码测试</title>
 <meta charset="utf-8">
 <meta name="author" content="Tezml" />
 <meta name="copyright" content="Tezml" />
 <meta name="description" content="Tezml" />
 <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<div id="wz1"></div>
<div id="wz2"></div>
<div id="wz3"></div>
<div id="wz4"></div>
<div id="wz5"></div>
<div id="wz6"></div>
<div id="wz7"></div>
<div id="wz8"></div>
<div id="wz9"></div>
<div id="wz10"></div>
<div id="wz11"></div>
<div id="wz12"></div>
</body>
<script type="text/javascript">
var chinese="请叫我中文"
var english="place tall me englash"
var Monster=":#&$/@"
$("#wz1").html(encodeURI(chinese))//编码 %E8%AF%B7%E5%8F%AB%E6%88%91%E4%B8%AD%E6%96%87
$("#wz2").html(decodeURI(chinese))//解码 请叫我中文
$("#wz3").html(encodeURI(english))//编码 place%20tall%20me%20englash
$("#wz4").html(decodeURI(english))//解码 place tall me englash
$("#wz5").html(encodeURIComponent(Monster))//编码 %3A%23%26%24%2F%40
$("#wz6").html(encodeURI(Monster))//编码 :#&$/@
$("#wz7").html(escape(chinese))//编码 %u8BF7%u53EB%u6211%u4E2D%u6587
$("#wz8").html(escape(english))//编码 place%20tall%20me%20englash
$("#wz9").html(escape(Monster))//编码 %3A%23%26%24/@
$("#wz10").html(unescape(chinese))//编码 请叫我中文
$("#wz11").html(unescape(english))//编码 place tall me englash
$("#wz12").html(unescape(Monster))//编码 :#&$/@
</script>
</html>

요약

escape()는 URL 인코딩에 직접 사용할 수 없습니다. 실제 기능은 문자의 유니코드 인코딩 값을 반환하는 것입니다. 예를 들어 "Spring Festival"의 반환 결과는 %u6625%u8282이고 escape()가 올바르지 않습니다. "" 인코딩은 주로 한자 인코딩에 사용되므로 더 이상 사용하지 않는 것이 좋습니다.

encodeURI()는 실제로 URL을 인코딩하는 데 사용되는 Javascript의 함수입니다. URL 주소 전체가 인코딩되지만 "; / ? : @ & = $ , #"과 같은 특별한 의미를 갖는 기호는 인코딩되지 않습니다. 해당 디코딩 함수는 decodeURI()입니다.

encodeURIComponent()는 특수 문자 "; / ? : @ & = $ , #"을 인코딩할 수 있습니다. 해당 디코딩 함수는 decodeURIComponent()입니다.

앰퍼샌드를 사용하여 URL을 전달하려면 encodeURIComponent()를 사용하세요

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