日期:2014-05-16  浏览次数:20834 次

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;
}