ホームページ  >  記事  >  ウェブフロントエンド  >  encodeURI、encodeURIComponent、escape_javascript スキルの違いと応用について話す

encodeURI、encodeURIComponent、escape_javascript スキルの違いと応用について話す

WBOY
WBOYオリジナル
2016-05-16 15:30:061576ブラウズ

まず、これら 3 つがエンコードに使用されることは誰もが知っています。encodeURI() と encodeURIComponent() について説明します。これら 2 つは、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(「私は私です」);
そして、上記の 2 つに比べて、脱出は異なります

escape() はエンコード、unescape() はデコード

; エスケープメソッド

すべてのコンピュータで読み取れるように String オブジェクトをエンコードします。

エスケープ(charString)

必須の charstring パラメータは、エンコードされる任意の String オブジェクトまたはリテラルです。

説明

エスケープメソッドは、charstring の内容を含む文字列値 (Unicode 形式) を返します。すべてのスペース、句読点、アクセント、およびその他の非 ASCII 文字は、%xx エンコード、
に置き換えられます。

xx は文字を表す 16 進数です。たとえば、スペースは " " として返されます。

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() を使用します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。