Ajax传参之url中特殊字符的处理之血站八方_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Ajax传参之url中特殊字符的处理之血站八方

Ajax传参之url中特殊字符的处理之血站八方

 2013/8/1 22:09:45  qindongliang1922  程序员俱乐部  我要评论(0)
  • 摘要:笔者,先贴出这个错误在Java后台中所报出的异常八月01,20135:08:46下午org.apache.tomcat.util.http.ParametersprocessParameters信息:Characterdecodingfailed.Parameter[entityDoc.abstrat]withvalue[mynameis7is%207%%20and%206%7]hasbeenignored
  • 标签:Ajax URL
笔者,先贴出这个错误在Java后台中所报出的异常


class="java">八月 01, 2013 5:08:46 下午 org.apache.tomcat.util.http.Parameters processParameters
信息: Character decoding failed. Parameter [entityDoc.abstrat] with value [my name is 7is%207%%20and%206%7] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
org.apache.tomcat.util.buf.UDecoder$DecodeException: isHexDigit



为什么会报这个异常,是因为笔者,在前台的Ajax的参数里面使用了一些url不转码的特殊字符%,因为事先没有做过处理,所以传到后台的时就变成了,前台传入
my name is 7% and 6%7


异常中显示
[my name is 7is%207%%20and%206%7]

注意,笔者先对其中的八个比较特殊不编码的字符列出
url特殊符号在url中实际含义转码后的十六进制表示++号表示空格%2B空格用+号或者编码%20/分隔目录和子目录%2F?分隔实际的 URL 和参数%3F%指定特殊字符%25#表示书签%23&参数间的分隔符%=URL 中指定参数的值%3D

在此,对URL的编码详细的总结一下


知道问题的原因后,解决起来就有思路了!可以使用2种方法,第一种使用正则把%号,替换成%25,手动指定一个特殊符号转码

var t= title.replace(/%/g,"%25");//g代表全局匹配替换

第二种方法,比较通用直接使用JavaScript提供的2次编码方案进行转码可以替换掉所有的的不能转码的特殊符号
   
                title=  encodeURI(title);
                title=  enc odeURI(title);
    



至此,完美解决url中的特殊符号的问题!

  • 大小: 37.7 KB
  • 查看图片附件
发表评论
用户名: 匿名