在用Ajax向action发送请求时,如果传过去的中文参数或者返回的中文编码不是UTF8的话,会出现乱码。因为AJAX默认都是用UTF8发送的。
解决方案:
Ajax发送中文参数后台收到是乱码问题:
由于Ajax是按UTF8发送,那么在用get方法发送中文参数前要对中文进行编码,例如,
前台JS页面(GBK环境):
var idiomName = $(this).children().html();//得到汉字
idiomName =
encodeURI(idiomName);//进行编码,但是默认只能以UTF8方式进行编码
$.get("getInfo.do",{value:idiomName},function(data,status){}//传输转码后的中文
发送后,在后台接受时要再次进行转码,后台java文件(GBK环境):
request.setCharacterEncoding("GBK");
String value = request.getParameter("value");
value=java.net.URLDecoder.decode(value,"utf-8");//进行转码,注意这里也为UTF8
System.out.println(value);//正常的汉字
后台向Ajax请求返回的是中文,前台收到是乱码问题:
在PrintWriter out =
response.getWriter();前加上response.setContentType("text/plain