乱码问题,网上找了找,各种版本,现在发现,各种的经验遍地开。。。
不多说,成功的方式如下:
1.设置好各处的页面编码,我一直都设置成了utf-8,没见什么异常;
2.ajax 处理方式,见源码
$.ajax({
type : "POST",
contentType : "application/json",
url : "ToHistoryServlet?handleFlag=add&sendPerson=" + sendPerson
+ "¤tTime=" + currentTime() + "&message="
+ encodeURIComponent(message) + "&recvPerson=" + recvPerson,
dataType : 'json',
success : function(result) {
alert(result.d);
}
});
注意事项:a.使用POST方式;
b.中文前加encodeURIComponent(把字符串编码为URI组件);
c.本例应用了jQuery。
3.servlet接收时处理方式,见源码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String handleFlag = request.getParameter("handleFlag");
Message msg = new Message();
// handle chinese code dml@2012.8.29
if (request.getParameter("message") != null) {
msg.setMessage(new String(request.getParameter("message").getBytes(
"iso8859-1"), "UTF-8"));
}
msg.setRecvPerson(request.getParameter("recvPerson"));
msg.setSendPerson(request.getParameter("sendPerson"));
msg.setSendTime(request.getParameter("currentTime"));
if (handleFlag.equals("add")) {
HistoryHandle.addMessage(msg);
} else if (handleFlag.equals("delete")) {
HistoryHandle.deleteMessage(msg);
}
}
注意事项:a.设置编码方式 request.setCharacterEncoding为utf-8;
b.js默认的编码是iso8859-1,所以需要转换一下
String xxxxx=new String(request.getParameter("message").getBytes(
"iso8859-1"), "UTF-8")
如上操作即可解决ajax乱码问题。