ホームページ >ウェブフロントエンド >jsチュートリアル >違いの詳細な分析と、escape()、encodeURI()、encodeURIComponent()_javascript スキルの例

違いの詳細な分析と、escape()、encodeURI()、encodeURIComponent()_javascript スキルの例

WBOY
WBOYオリジナル
2016-05-16 16:40:231125ブラウズ

JavaScript には、文字列をエンコードできる 3 つの関数 (escape、encodeURI、encodeURIComponent) と、対応する 3 つのデコード関数 (unescape、decodeURI、decodeURIComponent) があります。

以下にそれらの違いを簡単に紹介します:

1 escape() 関数

定義と使用法

escape() 関数は、すべてのコンピュータで読み取れるように文字列をエンコードします。

文法

エスケープ(文字列)

パラメータの説明

文字列は必須です。エスケープまたはエンコードされる文字列。

戻り値

エンコードされた文字列のコピー。これらの文字の一部は 16 進数のエスケープ シーケンスに置き換えられます。

説明

このメソッドは、ASCII 文字と数字、および次の ASCII 句読点文字をエンコードしません: - !他のすべての文字はエスケープ シーケンスに置き換えられます。

2 encodeURI() 関数

定義と使用法

encodeURI() 関数は、文字列を URI としてエンコードします。

文法

encodeURI(URIstring)

パラメータの説明

URIstring は必須です。エンコードされる URI またはその他のテキストを含む文字列。

戻り値

一部の文字が 16 進数のエスケープ シーケンスに置き換えられた、URIstring のコピー。

説明

このメソッドは、ASCII 文字と数字、および ASCII 句読点文字 - _ ! * ' ( ) をエンコードしません。

このメソッドの目的は、URI を完全にエンコードすることであるため、encodeURI() 関数は、URI 内で特別な意味を持つ次の ASCII 句読点をエスケープしません: ;/?:@&= $, #

3 encodeURIComponent() 関数

定義と使用法

encodeURIComponent() 関数は、文字列を URI コンポーネントとしてエンコードします。

文法

encodeURIComponent(URIstring)

パラメータの説明

URIstring は必須です。エンコードされる URI コンポーネントまたはその他のテキストを含む文字列。

戻り値

一部の文字が 16 進数のエスケープ シーケンスに置き換えられた、URIstring のコピー。

説明

このメソッドは、ASCII 文字と数字、および ASCII 句読点文字 - _ ! * ' ( ) をエンコードしません。

他の文字 (:;/?:@&= $,# など、URI コンポーネントを区切るために使用される句読点) は、1 つ以上の 16 進数のエスケープ シーケンスで置き換えられます。

ヒントとメモ

ヒント: encodeURIComponent() 関数は、引数が URI (プロトコル、ホスト名、パス、クエリ文字列など) の一部であると想定している点で encodeURI() 関数とは異なることに注意してください。したがって、encodeURIComponent() 関数は、URI の部分を区切るために使用される句読点文字をエスケープします。

4 概要:

3 つの関数の分析を通じて、escape() は ASCII 文字、数字、特定の記号を除くすべての受信文字列をエスケープすることがわかります。そのため、URL をエンコードしたい場合は、これを使用しないのが最善です。方法。また、URI 内の有効な文字はエンコードおよび変換されないため、encodeURI() を使用して URI 全体をエンコードします。 encodeURIComponent メソッドは、単一の URIComponent (リクエスト パラメーターを参照) をエンコードするときに最も一般的に使用され、URL 全体に影響を与えることなくパラメーター内の中国語と特殊文字をエスケープできます。

5 例:

1 エスケープ()

<script type="text/javascript">
document.write(escape("http://www.w3school.com.cn/") + "<br />")
document.write(escape("&#63;!=()#%&"))
</script>

出力:

http%3A//www.w3school.com.cn

%3F%21%3D%28%29%23%25%26

2 encodeURI()

<script type="text/javascript">
document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />")
document.write(encodeURI("http://www.w3school.com.cn/My first/"))
document.write(encodeURI(",/&#63;:@&=+$#"))
</script>

出力:

http://www.w3school.com.cn/

http://www.w3school.com.cn/My%20first/

,/&#63;:@&=+$#

URL 全体をエンコードしますが、URL 固有の識別子はトランスコードされません。

3 encodeURIComponent()

例 1:

<script type="text/javascript">
document.write(encodeURIComponent("http://www.w3school.com.cn/"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/&#63;:@&=+$#"))
</script>

出力:

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

例 2:

<script language="javascript">document.write('
<a href="http://passport.baidu.com/&#63;logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">退出</a>');</script>

パラメータも URL であるため、URL 内のパラメータをエンコードします。エンコードしないと、URL 全体のジャンプに影響します。

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