AJAX中文亂碼問(wèn)題探討及解決
更新時(shí)間:2013年10月25日 09:20:08 作者:
AJAX中文問(wèn)題分為兩大類:一是發(fā)送路徑中的參數(shù)有中文,在服務(wù)器段接收參數(shù)值是亂碼二是返回來(lái)的responseText或responseXML的值中含有中文是亂碼,下面為大家介紹下解決方法
AJAX中文問(wèn)題分為兩大類:
1)發(fā)送路徑中的參數(shù)有中文,在服務(wù)器段接收參數(shù)值是亂碼
例如:
var url="a.jsp?name=小李";
xmlHTTP.open ("post",url,true);
解決辦法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客戶端:
var url="a.jsp?name=小李";
url=encodeURI(url);
url=encodeURI(url); //兩次,很關(guān)鍵[具體為什么,我也不清楚]
/********************************************/
也有人寫成var url="a.jsp?name=escape("小李")";
功能和encodeURI方法類似。
/********************************************/
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定發(fā)送數(shù)據(jù)的編碼格式
xmlHTTP.open ("post",url,true);
服務(wù)器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode(name, "UTF-8");
2)返回來(lái)的responseText或responseXML的值中含有中文是亂碼
原因:AJAX在接收responseText或responseXML的值的時(shí)候是按照UTF-8的格式來(lái)解碼的,如果服務(wù)器段發(fā)送的數(shù)據(jù)不是UTF-8的格式,那么接收responseText或responseXML的值有可能為亂碼。
解決辦法:在服務(wù)器指定發(fā)送數(shù)據(jù)的格式:
在服務(wù)端:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
response.setContentType("application/json");//返回json文件
PrintWriter bw = response.getWriter();//輸出要使用此類
bw.write(result);
bw.flush();
bw.close();
總結(jié):1)ajax提交數(shù)據(jù)的格式默認(rèn)為utf-8,利用javascript的提供的escape()或encodeURI()方法.在服務(wù)器端接收的時(shí)候要使用java.net.URLDecoder.decode("","UTF-8")方法進(jìn)行解碼.
2)xtmlhttp 返回的數(shù)據(jù)默認(rèn)的字符編碼是utf-8,所以服務(wù)器要向客戶端發(fā)送數(shù)據(jù)的時(shí)候,也要采用utf-8編碼
如果上述方法仍然解決不了亂碼問(wèn)題,那你嘗試一下把jsp,htm,java文件用UTF-8編碼格式保存.
總之:前后臺(tái)數(shù)據(jù)交互都采用utf-8編碼就行了.
1)發(fā)送路徑中的參數(shù)有中文,在服務(wù)器段接收參數(shù)值是亂碼
例如:
var url="a.jsp?name=小李";
xmlHTTP.open ("post",url,true);
解決辦法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客戶端:
var url="a.jsp?name=小李";
url=encodeURI(url);
url=encodeURI(url); //兩次,很關(guān)鍵[具體為什么,我也不清楚]
/********************************************/
也有人寫成var url="a.jsp?name=escape("小李")";
功能和encodeURI方法類似。
/********************************************/
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定發(fā)送數(shù)據(jù)的編碼格式
xmlHTTP.open ("post",url,true);
服務(wù)器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode(name, "UTF-8");
2)返回來(lái)的responseText或responseXML的值中含有中文是亂碼
原因:AJAX在接收responseText或responseXML的值的時(shí)候是按照UTF-8的格式來(lái)解碼的,如果服務(wù)器段發(fā)送的數(shù)據(jù)不是UTF-8的格式,那么接收responseText或responseXML的值有可能為亂碼。
解決辦法:在服務(wù)器指定發(fā)送數(shù)據(jù)的格式:
在服務(wù)端:
復(fù)制代碼 代碼如下:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
response.setContentType("application/json");//返回json文件
PrintWriter bw = response.getWriter();//輸出要使用此類
bw.write(result);
bw.flush();
bw.close();
總結(jié):1)ajax提交數(shù)據(jù)的格式默認(rèn)為utf-8,利用javascript的提供的escape()或encodeURI()方法.在服務(wù)器端接收的時(shí)候要使用java.net.URLDecoder.decode("","UTF-8")方法進(jìn)行解碼.
2)xtmlhttp 返回的數(shù)據(jù)默認(rèn)的字符編碼是utf-8,所以服務(wù)器要向客戶端發(fā)送數(shù)據(jù)的時(shí)候,也要采用utf-8編碼
如果上述方法仍然解決不了亂碼問(wèn)題,那你嘗試一下把jsp,htm,java文件用UTF-8編碼格式保存.
總之:前后臺(tái)數(shù)據(jù)交互都采用utf-8編碼就行了.
您可能感興趣的文章:
- JQuery中Ajax的Post提交在IE下中文亂碼的解決方法
- ajax請(qǐng)求亂碼的解決方法(中文亂碼)
- jquery.ajax的url中傳遞中文亂碼問(wèn)題的解決方法
- 解決ajax+php中文亂碼的方法詳解
- JQuery AJAX 中文亂碼問(wèn)題解決
- ajax中文亂碼問(wèn)題解決方案
- jquery的ajax()函數(shù)傳值中文亂碼解決方法介紹
- ajax中文亂碼的各種解決辦法總結(jié)
- AJAX中文亂碼PHP中完美解決方法
- JQuery AJAX提交中文亂碼的解決方案
- Javascript和Ajax中文亂碼吐血版解決方案
- PHP Ajax中文亂碼問(wèn)題解決方法
- 一句話解決AJAX中文亂碼問(wèn)題[推薦]
- ajax+php中文亂碼解決辦法
- AJAX中文亂碼解決新方法分享
相關(guān)文章
layUI ajax加載html頁(yè)面后重新渲染的方法
今天小編就為大家分享一篇layUI ajax加載html頁(yè)面后重新渲染的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
國(guó)內(nèi)首發(fā) -- ajax完整功能框架
國(guó)內(nèi)首發(fā) -- ajax完整功能框架2007-01-01
IE6中ajax aborted錯(cuò)誤請(qǐng)求中斷解決方法
給a標(biāo)簽綁定了一個(gè)click事件用來(lái)觸發(fā)ajax請(qǐng)求,在IE6中,請(qǐng)求時(shí)常會(huì)被中斷,在其他瀏覽器中都一切正常,具體解決方法如下,感興趣的朋友可以參考下2013-06-06
js裝載xml文件然后發(fā)向服務(wù)器的實(shí)現(xiàn)代碼
js裝載xml文件然后發(fā)向服務(wù)器,具體的代碼可以參考下面的思路。2009-01-01
在實(shí)戰(zhàn)中可能碰到的幾種ajax請(qǐng)求方法詳解
這篇文章主要給大家分享了在實(shí)戰(zhàn)中可能碰到的幾種ajax請(qǐng)求方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03

