URLDecoder: Incomplete trailing escape (%) pattern问题处理

http://blog.csdn.net/yangbobo1992/article/details/10076335

________________________________________________________

最近在用的项目中,分页页面在导出excel抛出

java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern

该页面采用的是DWR分页,经过一番搜罗,终于修成正果.解决办法

 大致意思都懂了,我们只需要将传入后台的参数字符在decode之前使用replaceAll(‘%‘,‘%25‘)一下即可

Java代码  

  1. try {
  2. pageTitle = java.net.URLDecoder.decode(pageTitle,"UTF-8");
  3. sc = java.net.URLDecoder.decode(sc ,"UTF-8");
  4. } catch (UnsupportedEncodingException e) {
  5. e.printStackTrace();
  6. }

修正后代码如下:

Java代码  

  1. try {
  2. pageTitle = java.net.URLDecoder.decode(pageTitle.replaceAll("%", "%25"),"UTF-8");
  3. sc = java.net.URLDecoder.decode(sc.replaceAll("%", "%25") ,"UTF-8");
  4. } catch (UnsupportedEncodingException e) {
  5. e.printStackTrace();
  6. }

部分引用来自: http://dwr.2114559.n2.nabble.com/Exception-URLDecoder-Incomplete-trailing-escape-pattern-td5396332.html

特别注意:

有些时候导出excel时采用的是get方式导致URL字符串长度过长,改用POST方式可以解决以上问题。

使用js实现POST表单提交代码片段:

Js代码  

  1. function post(URL, PARAMS)
  2. {
  3. //创建一个临时表单
  4. var tempForm = document.createElement("form");
  5. tempForm.action = URL;
  6. tempForm.method = "post";
  7. tempForm.style.display = "none";
  8. //遍历各个参数,将文本域添加至表单中
  9. for (var x in PARAMS)
  10. {
  11. var opt = document.createElement("textarea");
  12. opt.name = x;
  13. opt.value = PARAMS[x];
  14. tempForm.appendChild(opt);
  15. }
  16. //将表单添加至当前页面中.
  17. document.body.appendChild(tempForm);
  18. //提交表单.
  19. tempForm.submit();
  20. }

也可参照此方法解决:http://blog.csdn.net/zhensoft163/article/details/7298161

时间: 2024-08-04 14:01:17

URLDecoder: Incomplete trailing escape (%) pattern问题处理的相关文章

URLDecoder: Incomplete trailing escape (%) pattern

在使用URLDecoder对字符串进行解码的时候 报以下异常信息: Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern 原因是字符串中包含有%字符 解决方法如下 example: String str = "hello该字符串中包含%"; System.out.println(URLDecod

URLDecoder: Illegal hex characters in escape (%) pattern - For input string:

来自:http://stackoverflow.com/questions/11257509/urldecoder-illegal-hex-characters-in-escape-pattern-for-input-string-p Whoever created the URL should have percent encoded the % by writing %25. Example invalid URL http://example.com/test?q=%.P Example

URLEncoder.encode、URLDecoder.decode、escape、encodeURI、encodeURIComponent

escape()方法 采 用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符 在字符集表里面的编码的16进制数字).比如,空格符对应的编码是%20,如果是中文,则使用unicode编码格式如 %uxxxx.unescape方法与此相反.不会被此方法编码的字符有69个: @*_+-./ ,0-9,a-z,A-Z encodeURI() 方法 把URI字符串采用UTF-8编码格式转化成escape

python正则表达式 re (二)escape

背景: 在使用python的过程中,你肯定对转义字符的使用苦恼过,因为有的时候我们需要使用一些特殊符号如"$ * . ^"等的原意,有时候需要被转义后的功能,并且转义字符地使用很繁琐,容易出错,那拯救你的就非re.escape莫属了. escape(pattern) Escape all non-alphanumeric characters in pattern. 定义: re.escape(pattern) 可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数.如果字符

第17章 标准库特殊设施

17.1类型tuple tuple是类是pair的模板.每个pair都不相同,但是都有两个成员.而一个tuple类型会有任意数量的成员.(定义在tuple头文件中) tuple<T1,T2,...,Tn> t; t是一个tuple,成员数位n,第i个成员的类型为Ti.所有成员都进行值初始化 tuple<T1,T2,...,Tn> t(v1,v2,...,vn); t是一个tuple,成员类型为T1,T2,...,Tn,每个成员用对应的初始值vi进行初始化.此构造函数是explici

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

帮助类2

#region 清除HTML标记且返回相应的长度 2 public static string DropHTML(string Htmlstring, int strLen) 3 { 4 return CutString(DropHTML(Htmlstring), strLen); 5 } 6 #endregion #region TXT代码转换成HTML格式 2 /// <summary> 3 /// 字符串字符处理 4 /// </summary> 5 /// <para

帮助类下

#region HTML代码转换成TXT格式 1010 /// <summary> 1011 /// 字符串字符处理 1012 /// </summary> 1013 /// <param name="chr">等待处理的字符串</param> 1014 /// <returns>处理后的字符串</returns> 1015 /// //把HTML代码转换成TXT格式 1016 public static Stri

python3.x 正则表达式的应用

正则表达式是我认为比较难的一个东西,今天忽然又学到了这个,想到写下来,以后作为参考手册使用. python如果想使用python需要引用re方法,在文件开始进行引用. import re 接下来说一下re包含的函数的用法. re.__all__ 返回一个包含re函数名的列表 print(re.__all__) 结果如下: ['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile