请高手帮忙解决Ajax接受中文乱码问题。。。求救!!拜托!!!

Sunking_Yin 2012-12-19 09:22:31
这是servlet端代码:其中 mes.getContent()输出的是中文。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
//指定浏览器用的字符集 禁用缓存
response.setContentType("text/xml;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache");
String sender=request.getParameter("sender");
String getter=request.getParameter("getter");
System.out.println(sender+getter);
//将数据添加到数据库,调用MessageService类中的方法
MessageService ms=new MessageService();
List<Message> lists=new ArrayList<Message>();
lists=ms.getMessage(getter, sender);
if(lists!=null&&!(lists.equals(""))){
out.println("<meses>");
// Message mes=new Message();
// mes=lists.get(0);
for(Message mes:lists){
//out.println("<message>");
out.println("<mesid>"+mes.getId()+"</mesid>");
out.println("<sender>"+mes.getSender()+"</sender>");
out.println("<getter>"+mes.getGetter()+"</getter>");
out.println("<content>"+mes.getContent()+"</content>");
out.println("<sendTime>"+mes.getSendTime()+"</sendTime>");
//out.println("</message>");
}
out.println("</meses>");
}
// else{
// out.println("");
// }
out.flush();
out.close();
}


这是ajax代码:
function getMessage()
{
var myXmlHttpRequest=getXMLHttpObject();
if(myXmlHttpRequest)
{
var url="servlet/GetMessageController";
var data="&getter=<%=loginname%>"+"&sender=<%=name%>";
myXmlHttpRequest.open("post",url,true);
myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");

//指定处理结果的函数
myXmlHttpRequest.onreadystatechange=function ()
{
if(myXmlHttpRequest.readyState==4){//如果响应已经完成即调用完成
if(myXmlHttpRequest.status==200){//如果返回当前请求的http的状态码=200,说明操作正常
//接收
var mesRes=myXmlHttpRequest.responseXML;
var contents=mesRes.getElementsByTagName("content");
var sendTimes=mesRes.getElementsByTagName("sendTime");
if(contents.length!=0)
{ //处理数据
for(var i=0;i<contents.length;i++)
{
document.getElementById("mycontents").value+="<%=name%>对<%=loginname%>说:"+contents[i].childNodes[0].nodeValue;
}
}
}
}
}
myXmlHttpRequest.send(data);
}
}

HTML代码:
<body>
<center>
<h1>聊天室(<font color="red"><%=loginname %></font>正在和<font color="red"><%=name %></font>聊天)</h1>
<textarea rows="20" cols="50" id="mycontents"></textarea><br/>
<input type="text" style="width: 300px" id="content" />
<input type="button" value="接受消息" onClick="getMessage();" />
</center>
</body>



在textarea中输出的contents为中文乱码。请问这个怎么解决呢??!!
...全文
389 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuren22 2013-01-07
  • 打赏
  • 举报
回复
response.setContentType("text/xml;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out=response.getWriter(); 把PrintWriter out=response.getWriter();这句话放到response的后面
licip 2013-01-06
  • 打赏
  • 举报
回复
看看是什么类型的码乱,有可能是gbk与utf-8的转化的乱码,是你的浏览时用gbk的方式浏览了。 正如1楼所说,你看看你的html中有没有meta去设置浏览器的编码的。要有的话,指定为utf-8吧。
shelly 2013-01-06
  • 打赏
  • 举报
回复
中文的话要用encoding和decoding吧?
z_yes163 2013-01-06
  • 打赏
  • 举报
回复
引用 5 楼 garr_odie 的回复:
中文的话要用encoding和decoding吧?
+1
xuyuqing1990 2013-01-06
  • 打赏
  • 举报
回复
看看用的是post方式还是get方式,最好的解决办法 写个过滤器
Sunking_Yin 2012-12-20
  • 打赏
  • 举报
回复
???这个要怎么写呢?!在Ajax中写JSP代码?!Ajax接受的是客户端的数据,java编写的是服务器端的数据,这要怎么传输啊?!
程序媛小李 2012-12-19
  • 打赏
  • 举报
回复
在界面 试试将传回的字符串这样处理一下, s = new String(s.getBytes('ISO8859-1','UTF-8')); 注意这句是Java的语句
Go 旅城通票 2012-12-19
  • 打赏
  • 举报
回复
检查html文件meta指定为utf-8编码没有,并且这个html文件的存储编码也需要为utf-8
robin_csdn 2012-12-19
  • 打赏
  • 举报
回复
在dopost裡加以下語句: request.setCharacterEncoding("utf-8");

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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