ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript encodeURI と encodeURIComponent_javascript のヒント

JavaScript encodeURI と encodeURIComponent_javascript のヒント

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

encodeURI 関数と encodeURIComponet 関数は両方とも JavaScript で使用され、URI をエンコードし、関連するパラメーターを UTF-8 エンコード形式のデータに変換します。 URI がロケーションジャンプを実行すると、パラメータ内の中国語や日本語などの非 ASCII コードはコード変換されます。

これら 2 つの関数の機能は比較的似ていますが、いくつかの違いがあります。

encodeURI: エンコードされない文字は 82 文字あります: !、#、$、&、'、(,)、*、,,,-,.,/,:,;,=,?,@, _、~、0-9、a-z、A-Z
encodeURIComponent: エンコードされない 71 文字があります: !、'、(,)、*、-、.、_、~、0-9、a-z、A-Z

質問:

ajax.get ( url '?k1'=v1 '&k2'=v2 '&k3'=v3, ... );

URLはencodeURIエンコードのみなので、送信したいパラメータがsearchWord = a bの場合、a bになります。


解決策:


ajax.post( url, params,....)


ここで、params はオブジェクトです。


理由: パラメーターがオブジェクトまたは配列の場合、コンポーネント ライブラリにはすでに encodeURIComponent が用意されています。 また、文字列だけを使用する場合、コンポーネント ライブラリは何も行わないため、バックエンドに到達したときに特殊文字がフィルタリングされます。


encodeURI() の使用法


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


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


ヒント: URI コンポーネントに ? や # などの区切り文字が含まれている場合は、encodeURIComponent() メソッドを使用して各コンポーネントを個別にエンコードする必要があります。


例:

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />") 
document.write(encodeURI("http://www.w3school.com.cn/My first/")) 
document.write(encodeURI(",/&#63;:@&=+$#")) 
//批注:只转换域名后面的部分,并且对,/&#63;:@&=+$#不处理。 
// http://www.w3school.com.cn 
// http://www.w3school.com.cn/My%20first/ 
// ,/&#63;:@&=+$#  

decodeURI()関数は、encodeURI()関数でエンコードされたURIをデコードできます。


encodeURIComponent() の使用法

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


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


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


例:

document.write(encodeURIComponent("http://www.w3school.com.cn")) 
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) 
document.write(encodeURIComponent(",/&#63;:@&=+$#")) 
//对比 
// 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  
decodeURIComponent()関数は、encodeURIComponent()関数でエンコードされたURIをデコードできます。


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