uriコーディング
4682 ワード
関連する関数は次のとおりです.(いずれもグローバル関数)
encodeURI(URIString): URI
decodeURI(URIString)
encodeURIComponent(s): URI
decodeURIComponent(s)
EncodeURI符号化規則:
1、encodeURI()に対して、ASCIIアルファベット、数字、「-.!~*'()」などの句読点は符号化されない.
2、encodeURIはURIを符号化するために使用されるため、uriにおいて特別な意味を持つASCII句読点も符号化されない.例えば:;/?:@=+$,#
3、uriの他の文字は対応するutf-8符号化に変換される.
1、0001—007 E(ASCII文字)は%xxに符号化される
2、<80—u 07 ff間のunicode文字、%x%xxで符号化
3、u 0800—uffff間のunicode文字はいずれも%xx%x%xx%xxと符号化される
4、この方法で符号化する場合、URIに含まれていないことを確認する.などの文字、そうでない場合はencodeURIComponentを使用してuriの各部分を個別に符号化する必要があります
encodeURIComponent:
1、ASCIIアルファベット、数字、「-.!~*'()」などの句読点は符号化されない.
2、/? : @ = + $ , #uriを区切るためにコードされます
注意:
1、ECMAScript 3の前にescape()とunescapeを使用してencodeURIのような符号化を実行できますが、現在は破棄されています.
2、encodeURIComponent設定パラメータはURIの一部であるため、URIの異なる部分を分割するための文字は符号化される
3、URIには/?:@=+$が含まれている等の場合はencodeURIComponentでuriの各部を個別に符号化する
4、encodeURIComponentで符号化した後、decodeURIで復号してもよいし、decodeURIcomponentで復号してもよい
eg:
var uriEncode = encodeURI("http://www.cnblogs.com/wishyouhappy");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //uriEncode: http://www.cnblogs.com/wishyouhappy
console.log("uriDeocde: " + uriDeocde); //uriDeocde: http://www.cnblogs.com/wishyouhappy
//,/?:@&=+$#
var uriEncode = encodeURI(",/?:@&=+$#");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //,/?:@&=+$#
console.log("uriDeocde: " + uriDeocde); //,/?:@&=+$#
// %20, %xx%xx%xx
var uriEncode = encodeURI("http://www.cnblogs.com?name = ' '");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //http://www.cnblogs.com?name%20=%20'%E6%B5%81%E5%85%89'
console.log("uriDeocde: " + uriDeocde); // http://www.cnblogs.com?name = ' '
// encodeURIComponent uriDeicode uriDecodeComponent
var uriEncode = encodeURIComponent("Are you happy?");
var uriDeocde = decodeURI(uriEncode);
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); // Are%20you%20happy%EF%BC%9F
console.log("uriDeocde: " + uriDeocde); //Are you happy?
console.log("uriDecodeComponent: " + uriDecodeComponent); //Are you happy?
var uriEncode = encodeURIComponent(",/?:@&=+$#");
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); //%2C%2F%3F%3A%40%26%3D%2B%24%23
console.log("uriDecodeComponent: " + uriDecodeComponent); //,/?:@&=+$#