ajax 中文乱码

zhang2chenggong 2010-06-01 10:04:39
在servlet中,有中文传递到页面中的js里面,在js显示中文时,出现乱码。
serlet里面部分代码:

StringBuffer sb=new StringBuffer("<nprovince>");
for(City city:clist){
sb.append("<scity>").append(city.getCityId()).append("</scity>");
sb.append("<scity>").append(new String(city.getName().getBytes("iso8859-1"),"utf-8")).append("</scity>");
//传递中文名称。
}
sb.append("</nprovince>");


jsp中的js部分代码:

if(req.status == 200){
var city=req.responseXML.getElementsByTagName("scity");
var str=new Array();
var strname=new Array();
for(var i=0;i<city.length;i=i+2){
str[i]=city[i].firstChild.data;
strname[i]=city[i+1].firstChild.data;
alert(unescape(strname[i]));//中文乱码
}
buildSelect(str,strname,document.getElementById("scity"));
}
...全文
396 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2010-06-01
  • 打赏
  • 举报
回复
不需要自己编解码

servlet

response.setCharacterEncoding("UTF-8"); // 设置输出编码
response.setContentType("text/xml; charset=UTF-8"); // 通知客户端

PrintWriter out = response.getWriter();
out.println("<?xml version='1.0' encoding='UTF-8'?>");
out.println("<root>中文中文</root>"); // 直接输出汉字
out.flush();


var res = req.responseXML.documentElement.firstChild.nodeValue;
alert(res); // 不会乱码



zhangersong 2010-06-01
  • 打赏
  • 举报
回复
别忘了在servlet中加response.setContentType("text/xml;charset=UTF-8");

zhang2chenggong 2010-06-01
  • 打赏
  • 举报
回复
同样谢谢
sun0322 2010-06-01
  • 打赏
  • 举报
回复
不好意思,看错了,是servlet到jsp页面
这个我也没试过,我只是传过数字,
就当帮你顶了
sun0322 2010-06-01
  • 打赏
  • 举报
回复
以上为我的代码,如果你明白AJAX,改一改就可以了

注意这里,要编码两次

url=encodeURI(url);
url=encodeURI(url);
sun0322 2010-06-01
  • 打赏
  • 举报
回复
<script language="javascript" type="text/javascript">

var xmlHttp=false;

//***********
function createRequest(prefixID,flag) {
//alert("调用createRequest function");

try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
//alert("Create XMLHttpRequest Sucess! By xmlHttp = new ActiveXObject('Msxml2.XMLHTTP') ");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined')
{
xmlHttp = new XMLHttpRequest();
}

//alert("prefix id is: "+prefixID);
//调用函数

if(flag=='1')
getReplyInfo(prefixID);
else if(flag=='2')
deleteMessageInfo(prefixID);


}
//************

//回复留言
function getReplyInfo(prefixID) {
//alert("调用getReplyInfo function");

var muReply = document.getElementById(prefixID+"replyID").value;
//alert(muReply);
var url = "/sxzlc/messageboard/adminReply.action?id=" + prefixID+"&muReplay="+muReply;
url=encodeURI(url);
url=encodeURI(url);
//alert(url);
try{
xmlHttp.open("GET", url, true);
//xmlHttp.setRequestHeader("Content-Type","charset=gb2312");
//alert("open Sucess");
}catch(e3){
alert("open Fail");
}
xmlHttp.onreadystatechange = updatePage;
try{
xmlHttp.send(null);
//alert("send Sucess");
}catch(e4){alert("send Fail");
}

}

//不回复,直接删除用户的留言
function deleteMessageInfo(prefixID) {
//alert("调用deleteMessageInfo function");
var url = "/sxzlc/messageboard/deleteMessage2.action?id=" + escape(prefixID)+"&xmlHTTP="+escape('sxzlc');

//alert(url);
try{
xmlHttp.open("GET", url, true);
//alert("open Sucess");
}catch(e3){alert("open Fail");
}
xmlHttp.onreadystatechange = updatePage;
try{
xmlHttp.send(null);
//alert("send Sucess");
}catch(e4){alert("send Fail");
}


}


//************
function updatePage() {
if (xmlHttp.readyState == 4) {
//alert("repopnse had achieve / complete")
if (xmlHttp.Status == 200) {
{
var aaa = xmlHttp.responseText.split("/");
if(aaa[1]==1)
hiddenReply(aaa[2]);
else
alert(aaa[0]);
}

}
}
else {
//alert("回复失败");
}
}


//*****************

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧