ホームページ > ウェブフロントエンド > jsチュートリアル > js_javascript スキルの文字列エンコード関数scape()、encodeURI()、およびencodeURIComponent()の違いの詳細な説明

js_javascript スキルの文字列エンコード関数scape()、encodeURI()、およびencodeURIComponent()の違いの詳細な説明

WBOY
リリース: 2016-05-16 15:07:10
オリジナル
1494 人が閲覧しました

JavaScript には、文字列をエンコードできる 3 つの関数、つまり、escape、encodeURI、encodeURIComponent、および対応する 3 つのデコード関数があります。

エスケープ、デコードURI、デコードURIコンポーネント。

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

1 つのエスケープ() 関数

定義と使用法

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("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート