jquery ajax post 中文編碼亂碼解決方案

來源:互聯網
上載者:User

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, "+");
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.