读书人

ajax提交特殊字符编码转换有关问题.is

发布时间: 2012-08-21 13:00:21 作者: rapoo

ajax提交特殊字符编码转换问题.ishexdigit问题-解决方案
今天测试密码输入了一串特殊字符后后台出来如下错误:

2010-9-3 11:44:56 org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: EOF
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:82)

java.io.CharConversionException: ishexdigit
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:82)

引起的原因:httpServletRequst对象中的键值对中包含: "%"



解决办法在ajax提交前先进行编码,在java后端在进行解码

ajax编码方法:value = encodeURIComponent(encodeURIComponent(str)).replace(/%20/g, "+");

java解码方法:

/**  * 转换ajax提交的表单编码 URLDecoder  * @param str  * @return  */ public static String URLDecoder(String str){  if(str == null || str.isEmpty()){   return str;  }  try{   str = URLDecoder.decode(str, "UTF-8");  }catch(Exception e){   log.error("URLDecoder.decode转换前台传过来的汉字编码格式时候发生异常!", e);  }  return str; } 一个测试输出的转换前和转换后结果:request psw==========%40!%23%24%25%5E%26*()-%3Ddecoder psw==========@!#$%^&*()-=

读书人网 >Ajax

热点推荐