jquery ajax 中文乱码处理
jquery在发送ajax数据时,使用了js的内置方法encodeURIComponent对数据进行了处理,该方法的作用是把数据
以UTF-8的方式编码,所以页面的编码如果是GBK或gb2312时候,服务端接收就会出现乱码。
解决方法:
---------------------------
客户端(jsp页面)
在传递数据前对数据再一次进行encodeURIComponent编码
var m_name = $.trim($("#m_name").val());
m_name = encodeURIComponent(m_name); //对中文进行处理
var map = {
m_id:$('#m_id').val(),
name:m_name
};
$.post("EditMer.do",map,function(data){
//..... (根据服务器返回数据进行相关操作)
});
---------------------------
服务端(java程序)
对含有中文的字符串进行解码
String name = request.getParameter("name"); //商品名称
name = Utils.decodeJqueryAjaxStr(name);
/**
* 将jquery ajax 中文字符串 解码
* @param str 需要解码的字符串
* @return
*/
public static String decodeJqueryAjaxStr(String str){
if(str==null || str.equals("")){
return "";
}
str = str.trim();
try {
str = java.net.URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}