08-01
22

Character decoding failed. Parameter skipped.java.io.CharConversionException: isHexDigit.

做ajax传递参数的时候遇到这个异常,在网上找了N天的东西,还是没找到答案,原来我一直没发现原来是 escape带来的错误。我是这样写的
var url = "b.jsp?name=" + escape(u_name);

服务端获取:
String name=request.getParameter("name");
name=new String(name.getBytes("iso-8859-1"));
System.out.println(name);

结果老是报错:org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit.

我知道是字符串转换异常,可是就不知道怎么样弄好。
后来听说是escapse的问题,于是开始找资料了。终于解决了。

先把url改下:
  var url = "b.jsp?name=" +u_name;
   url=encodeURI(url); //写一个不行。如果写一个就是????号。
   url=encodeURI(url);  //写2个,则输出 %df%a4这中.        
   searchReq.open("GET", url, true);


====
当然,也可以在JSP页面写JAVA代码,如:URLEncoder.encode(mg);

服务端获取:
String name=request.getParameter("name");
name = java.net.URLDecoder.decode(name,"UTF-8");   //这句话一定要,因为如果不写的话,编码 就 是%E5%A6%88%
System.out.println(name);


[本日志由 blurxx 于 2008-09-23 05:02 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: isHexDigit AJAX escape
相关日志:
评论: 5 | 引用: 0 | 查看次数: 4333
回复回复pobaby[2008-11-01 03:52 PM | del]
但服务端得到的类似为:
%u6492%u65E6%u6CD5%u6492%u53CD%u5BF9

的数据,那如何把它转回来插入到数据库中呢??多些解答。
回复回复george5[2008-09-23 04:49 PM | del]
非常感谢,对我帮助很大
回复回复SUN[2008-08-19 05:15 PM | del]
我也遇到这个问题了,

非常感谢楼主
回复回复blurxx[2008-04-18 07:31 PM | del]
引用来自 sparrow 引用来自 sparrow
万分感谢!

客气了,很高兴这篇文章对你有帮助
回复回复sparrow[2008-04-18 01:18 PM | del]
万分感谢!
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭