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*()-%3D
decoder psw==========@!#$%^&*()-=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值