encodeuricomponent會以utf-8編碼,在gbk編碼下,可不可以以gbk進行編碼呢?
如果還在打encodeuricomponent主意的話,那不好意思,encodeuricomponent只會utf-8編碼,並沒有其他api進行其他編碼;不過,別擔心,看看下面:
encodeuricomponent,它是將中文、韓文等特殊字元轉換成utf-8格式的url編碼。
escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeuri,encodeuricomponent編碼結果相同。
哈哈,看到希望吧?沒錯,就是用escape代替encodeuricomponent方法,不過必須注意:
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,a-z
encodeuricomponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,a-z
使用了escape之後必須對加號進行編碼,否則,當內容含有加號時候會被服務端翻譯為空白格
$.ajax({
url: ajaxurl,
type: 'post',
datatype: 'html',
timeout: 20000,//逾時時間設定
data:para,//參數設定
success: function(html){
}
});
ajax: function( s ) {
// extend the settings, but re-extend 's' so that it can be
// checked again later (in the test suite, specifically)
s = jquery.extend(true, s, jquery.extend(true, {}, jquery.ajaxsettings, s));
var jsonp, jsre = /=?(&|$)/g, status, data,
type = s.type.touppercase();
// convert data if not already a string
if ( s.data && s.processdata && typeof s.data !== "string" )
s.data = jquery.param(s.data);
........
}
jquery.param=function( a ) {
var s = [ ];
var encode=function(str){
str=escape(str);
str=str.replace(/+/g,"%u002b");
return str;
};
function add( key, value ){
s[ s.length ] = encode(key) + '=' + encode(value);
};
// if an array was passed in, assume that it is an array
// of form elements
if ( jquery.isarray(a) || a.jquery )
// serialize the form elements
jquery.each( a, function(){
add( this.name, this.value );
});
// otherwise, assume that it's an object of key/value pairs
else
// serialize the key/values
for ( var j in a )
// if the value is an array then the key names need to be repeated
if ( jquery.isarray(a[j]) )
jquery.each( a[j], function(){
add( j, this );
});
else
add( j, jquery.isfunction(a[j]) ? a[j]() : a[j] );
// return the resulting serialization
return s.join("&").replace(/%20/g, "+");
}