url符号化問題詳細解escape,encodeURI,encodeURIComponent

5206 ワード

1、バックグラウンド処理方式String str = java.net.URLDecoder.decode(str, "UTF-8");
2、フロントの処理方式は以下の通りです.
JavaScriptには、3つの文字列をエンコードできる関数があります.それぞれは、escape、encodeURI、encodeURIComponent、それぞれ3つの復号関数:unescape、decodededeURI、decodecodeURIComponentです.
これらの違いを簡単に紹介します.
1 escape()関数
定義と用法  escape()関数は文字列をエンコードすることができ、このようにしてすべてのコンピュータで文字列を読み取ることができます.
構文  escape(string)
パラメータ  説明   ストリングス  必要です.変換または符号化する文字列. 
戻り値  コードされたstringのコピー.一部の文字は16進数の変換シーケンスに置き換えられます.
説明  この方法はASCII文字と数字をエンコードすることはできません.これらのASCII句読点を符号化することもできません.()他のすべての文字は変換シーケンスに置き換えられます.
 
2 encodeURI()関数  定義と用法  エンコーディング()関数は文字列をURIとしてエンコードすることができます.
構文  encodeURI(URIstring)
パラメータ  説明   URIstring  必要です.一つの文字列には、URIまたは他の符号化するテキストが含まれています. 
戻り値  URIstringのコピーの中には、16進数の変換シーケンスによって一部の文字が置き換えられます.
説明  この方法はASCII文字と数字を符号化しないし、ASCII句読点も符号化しない.()
この方法はURIを完全に符号化することを目的としており、URIには以下のような特別な意味を持つASCII句読点に対して、エンコーディング()関数は転送されません.
 
3 encodeURIComponent関数
定義と用法  エンコーディング機能は、文字列をURIコンポーネントとしてエンコードすることができます.
構文  encodeURIComponent(URIstring)
パラメータ  説明   URIstring  必要です.一つの文字列は、URIコンポーネントまたは他のコード化されるテキストを含んでいます. 
戻り値  URIstringのコピーの中には、16進数の変換シーケンスによって一部の文字が置き換えられます.
説明  この方法はASCII文字と数字を符号化しないし、ASCII句読点も符号化しない.()
他の文字(例:;/?:@@=+、葏などのURIコンポーネントを区切るための句読点)は、1つまたは複数の16進数の変換シーケンスによって置き換えられます.
ヒントとコメント  ヒント:encodeURIComponent()関数とencodeURI()関数の違いに注意してください.前者は、そのパラメータがURIの一部(例えば、プロトコル、ホスト名、パスまたはクエリ文字列)であると仮定しています.したがって、エンコーディング関数は、URIの各部分を区切る句読点記号に変換される.
 
4まとめ:
 三つの関数を分析することによって、ASCII文字、数字と特定の記号以外に、伝達された文字列を全部変換符号化しますので、URLを符号化したいなら、この方法を使わないほうがいいです.また、エンコーディングはURI全体を符号化するために使用され、URI中の合法的な文字は符号化変換されない.一つのURIComponentを符号化する際には、パラメータの中の中国語、特殊文字を用いて変換することができ、URL全体に影響を与えない.
 
5例:
1 escape()
<script type=「text/javascript」>
document.write(escape)http://www.w3school.com.cn/")+"
""
Dcument.write(escape("?!=()((()菗唕%"))
出力:
http%3 A//www.w 3 school.com.cn
%3 F%21%3 D%28%29%25%26 2 encodeURI()
<script type=「text/javascript」>
Dcument.write(encodeURI)http://www.w3school.com.cn/")+"
""
Dcument.write(encodeURI)http://www.w3school.com.cn/My first/「)
Dcument.write(encodeURI(",/?:@@=+$菗))
出力:
http://www.w3school.com.cn/
http://www.w3school.com.cn/My%20first/
,/?:@@=+$
URL全体を符号化し、URLの特定識別子はトランスコードされない.
3 encodeURIComponent()
例1:
<script type=「text/javascript」>
Dcument.write(encodeURIComponent)http://www.w3school.com.cn/「)
document.write(<

Dcument.write(encodeURIComponent)http://www.w3school.com.cn/p 1/「)
document.write(<

Dcument.write(encodeURIComponent('、/?:@@=+$33751;))
http%3 A%2 F%2 Fwwww.w 3 school.com.cn  http%3 A%2 F%2 Fwwww.w 3 school.com.cn%2 Fp%201%2 F  %2 C%2 F%3 F%3 A%40%26%3 D%2 B%24%23例2:document.write('
<a href=”http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42「+'」>');
URLのパラメータをエンコードします.パラメータもURLですので、エンコードしないとURL全体のジャンプに影響します.
転載:http://www.cnblogs.com/qiantuwuliang/archive/2009/07/19/1526687.html
jsは文字を符号化して3つの関数に関連します.escape、encodeURIComponent、対応する3つの復号関数:unescape、decodeURI、decodeURIComponent.
1、パラメータを渡す時にはエンコーディングポイントを使う必要があります.このような組み合わせのurlこそ、〓などの特殊文字によって切断されないです.                          
たとえば:
<script laguage=「javascript」document.write('