佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > ajax中文亂碼問(wèn)題解決方案

ajax中文亂碼問(wèn)題解決方案

熱門標(biāo)簽:銀行業(yè)務(wù) Mysql連接數(shù)設(shè)置 阿里云 團(tuán)購(gòu)網(wǎng)站 服務(wù)器配置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) Linux服務(wù)器 電子圍欄
ajax中文亂碼問(wèn)題在中文中經(jīng)常會(huì)出現(xiàn)這種問(wèn)題,其實(shí)只要稍加注意就不會(huì)出現(xiàn)ajax中文亂碼這回事情了,注意前后臺(tái)編碼一致.你用的是中文.而ajax傳輸數(shù)據(jù)的時(shí)候用的是utf-8 ,還有對(duì)ajax get方法時(shí)最好escape 或urlcode,
復(fù)制代碼 代碼如下:

%@ page contenttype="text/html;charset=gb2312%>

如果是用servlet就加
復(fù)制代碼 代碼如下:

response.setcontenttype("text/html;charset=gb2312");
request.setcharacterencoding("gb2312");

還有一個(gè)更好的方法就是在加一個(gè)filter
在其中加入
復(fù)制代碼 代碼如下:

response.setcontenttype("text/html;charset=gb2312");
request.setcharacterencoding("gb2312");

一切都解決了
再說(shuō)一下從客戶端上傳數(shù)據(jù),就必須在服務(wù)端進(jìn)行編碼轉(zhuǎn)換
復(fù)制代碼 代碼如下:

string param = request.getparamter("param");
param = new string(param.getbytes("iso-8859-1"),"gb2312");

現(xiàn)在就都是中文的了。
注意前后臺(tái)編碼一致.你用的是中文.而ajax傳輸數(shù)據(jù)的時(shí)候用的是utf-8
復(fù)制代碼 代碼如下:

script>
var oxmlhttp = new activexobject( "microsoft.xmlhttp ");
oxmlhttp.open( "get ", "http://dotnet.aspx.cc/content.aspx ", false);
oxmlhttp.send()
var ostream = new activexobject( "adodb.stream ");
if(ostream == null)
alert( "您的機(jī)器不支持adodb.stream. ")
else
{
ostream.type=1;
ostream.mode=3;
ostream.open() ;
ostream.write(oxmlhttp.responsebody);
ostream.position= 0;
ostream.type= 2;
ostream.charset= "gb2312 ";
var result= ostream.readtext();
ostream.close();
ostream = null;
alert( result);
}
/script>

客戶端文件的編碼設(shè)置為gb2312,如下面代碼所示:
html代碼
復(fù)制代碼 代碼如下:

meta http-equiv="content-type" content="text/html; charset=gb2312" />

在發(fā)送的url地址中的查詢字符串或者是使用post方式發(fā)送的請(qǐng)求內(nèi)容不要使用escape函數(shù)進(jìn)行編碼,切記!
在服務(wù)器端的jsp教程文件也設(shè)置為gb2312編碼格式,如下面代碼所示:
jsp 代碼
或者設(shè)置response的頭,如下面代碼所示:
復(fù)制代碼 代碼如下:

response.setheader("content-type","text/html; charset=gb2312");

兩者原理是一樣的。
最著關(guān)鍵的是在獲取參數(shù)時(shí)應(yīng)該對(duì)獲取字符串進(jìn)行重新編碼,如下面代碼所示:
復(fù)制代碼 代碼如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"gb2312");

其中,username為接收的參數(shù)。
直接使用out.print(username);就可以將中文返回給客戶端,在客戶端直接使用xmlhttp.responsetext屬性就可以直接使用返回的中文了!
附件中我測(cè)試用的一個(gè)小例子,在tomcat6.0和resin2.1.8中通過(guò)測(cè)試!

其實(shí),還有一個(gè)一勞永逸的解決方案,就是添加一個(gè)過(guò)濾器。
補(bǔ)充一下提交方法為get時(shí)時(shí)在服務(wù)器里寫的時(shí)這句代碼
復(fù)制代碼 代碼如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"gb2312");

為post時(shí)應(yīng)該時(shí)這樣吧
復(fù)制代碼 代碼如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"utf-8");
您可能感興趣的文章:
  • ajax請(qǐng)求亂碼的解決方法(中文亂碼)
  • jquery.ajax的url中傳遞中文亂碼問(wèn)題的解決方法
  • jsp中 ajax的get請(qǐng)求的中文亂碼問(wèn)題的解決方法
  • 解決ajax+php中文亂碼的方法詳解
  • JQuery AJAX 中文亂碼問(wèn)題解決
  • jquery的ajax()函數(shù)傳值中文亂碼解決方法介紹
  • JQuery中使用ajax傳輸超大數(shù)據(jù)的解決方法
  • AJAX在GB2312的中文編碼傳輸 AJAX特殊字符編碼正確方法
  • Ajax傳輸中文亂碼問(wèn)題的解決辦法

標(biāo)簽:棗莊 蚌埠 衢州 萍鄉(xiāng) 大理 衡水 江蘇 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ajax中文亂碼問(wèn)題解決方案》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    永德县| 顺义区| 五大连池市| 界首市| 白水县| 文登市| 漯河市| 武城县| 偏关县| 门头沟区| 蕉岭县| 沽源县| 漯河市| 锦屏县| 新绛县| 永平县| 日照市| 河源市| 平乐县| 平乡县| 朝阳市| 阳谷县| 呼和浩特市| 称多县| 芮城县| 柘荣县| 巴彦县| 长寿区| 岢岚县| 抚远县| 昌江| 舒城县| 米林县| 吴川市| 辛集市| 宜章县| 南皮县| 丰镇市| 长兴县| 开化县| 阜阳市|