ajax亂碼解決匯總
文章來源:365jz.com 點(diǎn)擊數(shù):
603 更新時(shí)間:2010-01-07 22:33
參與評論
第一,javascript沿用java的字符處理方式,內(nèi)部是使用unicode來處理所有字符的,
第二,utf-8是每個(gè)漢字(unicode字符)用3個(gè)字節(jié)來存儲。
第三,用utf-8來send數(shù)據(jù)是不會出現(xiàn)亂碼的,是后臺程序沒有正確解碼才會出現(xiàn)亂碼。
第四,ajax發(fā)送數(shù)據(jù)的時(shí)候如果修改 Content-Type 為 application/x-www-form-urlencoded",肯定是用post方式,而“太大的數(shù)據(jù)往往會出錯(cuò)”是用GET方式發(fā)送數(shù)據(jù)造成的。
第五,用vbscript寫的函數(shù)是用來把數(shù)據(jù)轉(zhuǎn)成gbk編碼(操作系統(tǒng)默認(rèn)的編碼方式。如果在繁體系統(tǒng)上就是big5之類的編碼)的,而不是gb2312,兩者的編碼字符數(shù)量相差3倍左右。
第六,用cookie來發(fā)送數(shù)據(jù),一是很容易溢出,二是要不停的擦屁股,否則cookie里面的數(shù)據(jù)在每個(gè)http請求(包括圖片和腳本請求)中都會被發(fā)送。三是并發(fā)幾個(gè)http請求的時(shí)候,沒有辦法指定那個(gè)cookie是要發(fā)送給那個(gè)http請求的。
------------------------
用AJAX 來GET回一個(gè)頁面時(shí),RESPONSETEXT里面的中文多半會出現(xiàn)亂碼,這是因?yàn)閤mlhttp在處理返回的responseText的時(shí)候,是把 resposeBody按UTF-8編碼進(jìn)解碼考形成的,如果服務(wù)器送出的確實(shí)是UTF-8的數(shù)據(jù)流的時(shí)候漢字會正確顯示,而送出了GBK編碼流的時(shí)候就 亂了。解決的辦法就是在送出的流里面加一個(gè)HEADER,指明送出的是什么編碼流,這樣XMLHTTP就不會亂搞了。
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點(diǎn)擊進(jìn)入論壇
------分隔線----------------------------