服务器:tomcat
默认字符集:ISO8859-1
因为没有测试过在服务器字符集为UTF-8时ajax传递中文的情况,所以暂只考虑此状态下的转换。
1. 两次编码
JavaScript:
function fire() {
var url = "sm.do?method=md¶s=para";
url = encodeURI(url); // 1次编码
url = encodeURI(url); // 2次编码
// 发送url并获得返回值
}
action:
String paras = URLDecoder.decode(request.getParameter("paras"), "utf-8"); // 用uft-8解码一次即可得到中文字符
2.编码中文字符
JavaScript:
var $ = {
para : "中文",
fire : function() {
var cpara = encodeURIComponent(this.para); // 编码中文字符
var url = "sm.do?method=md¶s=" + cpara;
// 发送url并获得返回值
}
};
action:
String paras = request.getParameter("paras"); // 直接即可获得中文字符
附:如果是要在action里将xml类型数据当作返回值,加上如下语句:
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");