ホームページ > 記事 > ウェブフロントエンド > encodeURI、encodeURIComponent、escape_javascript スキルの違いと応用について話す
まず、これら 3 つがエンコードに使用されることは誰もが知っています。encodeURI() と encodeURIComponent() について説明します。これら 2 つは、URL の変換時にエンコードとデコードに使用されます。
エンコードがあればデコードも行われます。デコードは decodeURI() と decodeURIComponent() で、目的を達成するために、トランスコードするテキストをパラメータに取り込むだけです。
例:encodeURI("私はエンコードされるテキストです")
decodeURI("私はデコードされるテキストです")
encodeURIComponent("私はエンコードされるテキストです")
decodeURIComponent("私はデコードされるテキストです")
主な違いは次のとおりです:
encodeURI には 82 個の非エンコード文字があります: !、#、$、&、'、(,)、*、,,, -,.,/,:,;,=,?,@,_,~, 0 ~ 9、a ~ z、A ~ ZencodeURIComponent には 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(「私は私です」);
そして、上記の 2 つに比べて、脱出は異なります
; エスケープメソッド
すべてのコンピュータで読み取れるように String オブジェクトをエンコードします。
エスケープ(charString)
必須の charstring パラメータは、エンコードされる任意の String オブジェクトまたはリテラルです。
エスケープメソッドは、charstring の内容を含む文字列値 (Unicode 形式) を返します。すべてのスペース、句読点、アクセント、およびその他の非 ASCII 文字は、%xx エンコード、
に置き換えられます。
255 を超える文字値は、%uxxxx 形式で保存されます。
エスケープによってエンコードされない文字は 69 文字あります: *、,-、.、/、@、_、0-9、a-z、A-Z
エスケープ メソッドは、Uniform Resource Identifier (URI) のエンコードには使用できないことに注意してください。 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 エンコードに直接使用することはできません。その実際の機能は、文字の Unicode エンコード値を返すことです。たとえば、「Spring Festival」の戻り結果は %u6625%u8282 ですが、escape() は正しくありません。「」エンコードは主に中国語の文字エンコードに使用されており、その使用は推奨されません。
encodeURI() は、URL をエンコードするために実際に使用される Javascript の関数です。 URL アドレス全体はエンコードされますが、特別な意味を持つ記号「; / ? : @ & = $ , #」はエンコードされません。対応するデコード関数は decodeURI() です。encodeURIComponent() は特殊文字「; / ? : @ & = $ , #」をエンコードできます。対応するデコード関数は decodeURIComponent() です。
アンパサンドを含む URL を渡したい場合は、encodeURIComponent() を使用します