[鐗堟潈澹版槑]:鐗堟潈褰掍綔鑰呮墍鏈夛紝杞浇鏃惰浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄�:
http://www.open-lib.com/Forum/Read_69_1.action
鍓嶈█:
褰搄query ajax鍦╱tf-8缂栫爜涓嬶紙椤甸潰utf锛�8锛屾帴鏀秛tf-8锛夛紝鏃犱换浣曢棶棰樸�傚彲浠ユ甯竝ost銆乬et锛屽鐞嗛〉闈㈢洿鎺ヨ幏鍙栨纭殑鍐呭銆�
浣嗗湪浠ヤ笅鎯呭喌涓�:
GBK -> AJAX POST ->GBK
UTF-8 -> AJAX POST ->GBK
鍚庡彴浠g爜鏃犳硶鑾峰彇姝g‘鐨勫唴瀹癸紝閫氬父琛ㄧ幇涓鸿幏鍙栧埌濂囨�瓧绗︺�侀棶鍙枫��
缁忓吀瑙e喅鏂规硶锛�
1锛氬彂閫侀〉闈€�佹帴鏀堕〉闈㈠潎閲囩敤UTF-8缂栫爜銆�
2锛氬彂閫侀〉闈㈠湪璋冪敤ajax post鏂规硶涔嬪墠锛屽皢鍚湁涓枃鍐呭鐨刬nput鐢╡ncodeURIComponent缂栫爜涓�娆★紝鑰屾帴鏀堕〉闈㈠垯璋冪敤瑙g爜鏂规硶锛� 濡傦細java.net.urldecoder.decode("鎺ユ敹鍒板唴瀹�","utf-8") 锛夈��
鍏朵腑锛岀涓�绉嶆柟娉曟棤鐤戞槸鏈�绠�鍗曘�佹渶鐩存帴锛屼絾寰�寰�涓嶇鍚堝疄闄咃紝鍥犱负寰堝椤圭洰骞朵笉鏄娇鐢╱tf-8缂栫爜锛屼緥濡傚浗鍐呭ぇ閮ㄥ垎浣跨敤gbk缂栫爜锛屼篃涓嶅彲鑳戒负浜嗚В鍐宠繖鏍蜂竴涓棶棰橈紝鑰屽皢鏁翠釜椤圭洰杞崲涓簎tf-8缂栫爜锛屾垚鏈お澶э紝椋庨櫓澶珮銆�
绗簩鏂规硶锛屾槸鐜板湪鏈�澶氫汉浣跨敤鐨勬柟娉曪紝淇楃О浜屾缂栫爜锛屼负浠�涔堝彨浜屾缂栫爜锛岀瓑涓嬩細瑙i噴銆傚鎴风缂栫爜涓ゆ锛屾湇鍔$瑙g爜涓ゆ銆備絾杩欑鏂规硶涓嶅ソ鐨勫湴鏂癸紝灏辨槸鍓嶅彴鎵嬪姩缂栫爜涓�娆★紝鍚庡彴鍐嶆墜鍔ㄨВ鐮佷竴娆★紝绋嶄笉鐣欑灏变細蹇樿锛岃�屼笖浠g爜鎺哄拰鍓嶅彴閫昏緫銆�
浜や簰杩囩▼锛�
褰撴垜浠娇鐢ㄨ〃鍗曟寜鐓т紶缁熸柟寮弍ost鎻愪氦鏃跺�欙紙闈濧JAX鎻愪氦锛夛紝娴忚鍣ㄤ細鏍规嵁褰撳墠椤甸潰缂栫爜锛宔ncode涓�娆★紝鐒跺悗鍙戦�佸埌鏈嶅姟绔紝鏈嶅姟绔帴鏀跺埌琛ㄥ崟锛屼細鑷姩dencode涓�娆★紝閫氬父杩欎釜杩囩▼鏄绋嬪簭鏄�忔槑鐨勶紝鍥犳鍔犱笂鎵嬪姩缂栫爜銆佽В鐮侊紝灏卞彉鎴愪笂闈㈡墍璇寸殑浜屾缂栫爜銆�
浣嗗綋鎴戜滑浣跨敤AJAX鏂瑰紡鎻愪氦鏃跺�欙紝娴忚鍣ㄥ苟涓嶄細鑷姩鏇挎垜浠琫ncode锛屽洜姝ゅ湪jquery涓湁杩欐牱鐨勪竴娈典唬鐮侊細
// 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);


}
浠ヤ笂鏄痡query鐨刟jax鏂规硶鐨勪唬鐮佺墖娈碉紝涓嬮潰鏄甯歌皟鐢╦query ajax post鐨勪唬鐮侊細
$.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'html',
timeout: 20000 , // 瓒呮椂鏃堕棿璁惧畾
data:para, // 鍙傛暟璁剧疆
success: function (html){
}
});
閫氳繃涓婇潰浠g爜鍙互鐭ラ亾锛屽綋璁剧疆浜哾ata鏃跺�欙紝jquery鍐呴儴浼氳皟鐢╦Query.param鏂规硶瀵瑰弬鏁癳ncode锛堟墽琛屾湰搴旀祻瑙堝櫒澶勭悊鐨別ncode锛夈��
jQuery.param = function ( a ) {
var s = [ ];
function add( key, value ){
s[ s.length ] = encodeURIComponent(key) + ' = ' + encodeURIComponent(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, " + " );
} // jquery.param end
涓婇潰鏄痡Query.param鐨勪唬鐮侊紝缁嗗績鐐瑰彲浠ョ暀鎰忓埌encodeURIComponent杩欐柟娉曪紝杩欐槸javascript鍐呯疆鐨勬柟娉曪紝瀵圭洰鏍囧瓧绗︿覆鎵цutf-8 encode锛屽洜姝わ紝褰撻〉闈娇鐢╣bk缂栫爜鏃跺�欙紝鏈嶅姟绔細浣跨敤gbk杩涜瑙g爜锛屼絾瀹為檯鎻愪氦鐨勬暟鎹槸浠tf-8缂栫爜鐨勶紝鎵�浠ラ�犳垚鎺ユ敹鍒板唴瀹逛负涔辩爜鎴栬�呬负闂彿銆�
瑙e喅鏂规硶锛�
encodeURIComponent浼氫互utf-8缂栫爜锛屽湪gbk缂栫爜涓嬶紝鍙笉鍙互浠bk杩涜缂栫爜鍛紵
濡傛灉杩樺湪鎵揺ncodeURIComponent涓绘剰鐨勮瘽锛岄偅涓嶅ソ鎰忔�濓紝encodeURIComponent鍙細utf-8缂栫爜锛屽苟娌℃湁鍏朵粬api杩涜鍏朵粬缂栫爜锛涗笉杩囷紝鍒媴蹇冿紝鐪嬬湅涓嬮潰锛�
encodeURIComponent锛屽畠鏄皢涓枃銆侀煩鏂囩瓑鐗规畩瀛楃杞崲鎴恥tf-8鏍煎紡鐨剈rl缂栫爜銆�
escape瀵�0-255浠ュ鐨剈nicode鍊艰繘琛岀紪鐮佹椂杈撳嚭%u****鏍煎紡锛屽叾瀹冩儏鍐典笅escape锛宔ncodeURI锛宔ncodeURIComponent缂栫爜缁撴灉鐩稿悓銆�
鍝堝搱锛岀湅鍒板笇鏈涘惂锛熸病閿欙紝灏辨槸鐢�escape浠f浛encodeURIComponent鏂规硶锛屼笉杩囧繀椤绘敞鎰忥細
escape涓嶇紪鐮佸瓧绗︽湁69涓細*锛�+锛�-锛�.锛�/锛�@锛宊锛�0-9锛宎-z锛孉-Z
encodeURIComponent涓嶇紪鐮佸瓧绗︽湁71涓細!锛� '锛�(锛�)锛�*锛�-锛�.锛宊锛寏锛�0-9锛宎-z锛孉-Z
浣跨敤浜�escape涔嬪悗蹇呴』瀵瑰姞鍙疯繘琛岀紪鐮侊紝鍚﹀垯锛屽綋鍐呭鍚湁鍔犲彿鏃跺�欎細琚湇鍔$缈昏瘧涓虹┖鏍笺��
缁堜簬鐭ラ亾瑙e喅鍔炴硶浜嗭紝閲嶅啓jquery浠g爜锛�
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, " + " );
}
涓婇潰閭f浠g爜骞朵笉闇�瑕佸湪jquery鐨勬簮鏂囦欢閲嶅啓锛屽彲浠ュ湪浣犻」鐩殑javascript璐翠笂锛岃鐩栧畠鍘熸湁鐨勬柟娉曪紝涓嶈繃蹇呴』鍦╦query鍔犺浇涔嬪悗銆�
缁忓垵姝ラ獙璇侊紝涓婇潰閭f浠g爜鍦╱tf-8缂栫爜涔熷彲浠ュ伐浣滄甯革紝澶ф鏄紪鐮佹垚unicode鐨勭紭鏁呭惂銆�
杩欐牱锛屽氨涓嶆槸闇�瑕佷娇鐢ㄤ粈涔堜簩娆$紪鐮侊紝鍗冲奖鍝嶅墠鍙帮紝鍙堝奖鍝嶅悗鍙般�俫bk缂栫爜涓媋jax post涓嶅啀鏄棶棰樹簡锛屾涔冩槸缁堟瀬瑙e喅鏂规硶銆傚搱鍝堛��
鏈夊叴瓒g殑鍙互鍒�http://www.open-lib.com/Forum/Read_69_1.action涓庝綔鑰呬氦娴併��