우선 이 세 가지가 인코딩에 사용된다는 것은 모두 알고 있습니다. 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)
설명
여기서 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()를 사용하세요