- 相關(guān)推薦
JQuery中Post傳遞中文出現(xiàn)亂碼的解決方法有哪些
問(wèn)題一:
今天在做項(xiàng)目時(shí),需要用到Ajax,之前我在用GET方式傳遞中文參數(shù)時(shí),只需要在后臺(tái)程序中設(shè)置頁(yè)面編碼為GB2312即中文能正常顯示,可是這次由于表單項(xiàng)目較多,不適合用GET方式傳遞,只能用POST方式,但發(fā)現(xiàn)后臺(tái)程序中設(shè)置編碼為GB2312時(shí)中文還是顯示的亂碼。經(jīng)過(guò)一番研究問(wèn)題才最終得到解決。
解決方法:
解決此問(wèn)題的方法非常簡(jiǎn)單,只需要在JS處理參數(shù)時(shí)用escape()函數(shù)處理一下即可,而且不需要再用unescape()解碼,這個(gè)方法適合POST和GET方式,具體的Ajax代碼這里我不例出,這里給出用escape()函數(shù)處理參數(shù)時(shí)的代碼:
復(fù)制代碼 代碼如下:var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content);
通常我們?cè)谔幚鞟jax的時(shí)候會(huì)在這里直接獲取參數(shù)的值,為了使中文參數(shù)不是亂碼,我們只需要用escape()函數(shù)對(duì)參數(shù)處理下即可。
問(wèn)題二:
當(dāng)網(wǎng)站頁(yè)面不是utf-8編碼時(shí),ajax提交的中文便會(huì)變成亂碼。
解決方法如下:
找到j(luò)query.js里的contentType:application/x-www-form-urlencoded,將它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。
原因:未指定charset時(shí),jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了書(shū)寫(xiě)所有西方歐洲語(yǔ)言不可缺少的附加字符。jquery的ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,而使用了歐洲的字符集,所以傳遞中文時(shí)才會(huì)出現(xiàn)亂碼
我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教程-utf8下都使用過(guò),從來(lái)沒(méi)遇到有字符編碼的問(wèn)題。于是將Prototype和JQuery代碼都下載下來(lái)打開(kāi)研究原因。
不同之處在于JQuery默認(rèn)的contentType:application/x-www-form-urlencoded
而Prototype則是contentType:application/x-www-form-urlencoded; charset=UTF-8
這才是JQuery正在亂碼的原因,在未指定字符集的時(shí)候,是使用ISO-8859-1
ISO8859-1,通常叫做Latin-1。Latin-1包括了書(shū)寫(xiě)所有西方歐洲語(yǔ)言不可缺少的附加字符。
JQuery的Ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,使用了歐洲的字符集,所以才引起了傳遞中文出現(xiàn)亂碼的問(wèn)題。
而我們的UTF-8則可以解決這一問(wèn)題。
最終指需要修改JQuery的代碼,顯式聲明contentType使用utf-8字符集,即可解決GB2312中文傳遞的問(wèn)題。
只需要簡(jiǎn)單的將JQuery的代碼加以修改,加上charset=UTF-8就可以了,這樣不需要改變改什么web.config或什么在頁(yè)面中改編碼什么的了,也不需要用escapc(str)再在服務(wù)端解碼。英文怎么傳遞,中文也怎么傳遞。
這里給段簡(jiǎn)單的代碼測(cè)試一下:
test.html頁(yè)面代碼:
復(fù)制代碼 代碼如下:
function DoAjax(){
$.post("AjaxTest.aspx",{txt:$("#tbox1").val()},
function(data){
$("#AjaxResponse").text(data);
}
);
}
AjaxTest
AjaxTest.aspx處理頁(yè)面:
復(fù)制代碼 代碼如下:<%@ page="" language="C#" contenttype="text/html" responseencoding="gb2312">
string parms;
void Page_Load(object sender , EventArgs e)
{
parms=Request["txt"];
if (String.IsNullOrEmpty(parms)){
Response.Write("Is Null");
}else{
Response.Write(parms);
}
}
此外,由于Ajax的默認(rèn)漢字編碼是utf-8,因此比較保險(xiǎn)的方法是保證所涉及的頁(yè)面統(tǒng)一編碼格式為utf-8。
【JQuery中Post傳遞中文出現(xiàn)亂碼的解決方法有哪些】相關(guān)文章:
Word打開(kāi)WPS文檔成亂碼的解決方法參考07-22
Word打開(kāi)WPS文檔成亂碼的解決方法介紹07-19
關(guān)于Word打開(kāi)WPS文檔成亂碼的解決方法07-22
關(guān)于雙硬盤(pán)出現(xiàn)的問(wèn)題和解決方法05-15
香港中文大學(xué)金融工程碩士有哪些申請(qǐng)條件03-30
2024中國(guó)象棋的術(shù)語(yǔ)有哪些04-13
廣告設(shè)計(jì)中色彩的運(yùn)用有哪些原則07-03
PLC在數(shù)控機(jī)床中的應(yīng)用有哪些11-28
愛(ài)爾蘭留學(xué)生活中的基本費(fèi)用有哪些?11-08
舞蹈的種類(lèi)有哪些05-20