java后台解码问题

lz2532178 2012-01-16 10:20:48
问题是这样的: 现在有两个url地址,注:*都是字母,这边只是隐藏下敏感单词
正确的: :http://uim.sh.*-of-*.com/lks/koa/lks_news.nsf/?opendatabase&Category=门户公告类

被编码后的地址:http://uim.sh.*%u2dof%u2d*.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b

这边可以看到,地址中的两个“-”和“门户公告类”编码了,我现在得到的参数more是那个被编码后的地址,即:
String more = "http://uim.sh.bank%u2dof%u2dchina.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b";

问题来了,这边我用了几种方法都失败,有些是网上找的方法:

方法一(直接代码):

String more = "http://uim.sh.bank%u2dof%u2dchina.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b";
System.out.println(more);
String moreURL = new String(more.getBytes("ISO8859-1"), "GB2312");
System.out.println(moreURL);
这个方法是网上找的,但是最后输出的 moreURL还是原来的,没变化,不明白是为什么,想知道原因,是我参数写错了?

方法二:

String more = "http://uim.sh.bank%u2dof%u2dchina.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b";
System.out.println(more);
more = URLDecoder.decode(more, "UTF-8");
System.out.println(more);
这个方法,代码运行到这里报错,不知道什么原因

这边我的目的就是把那个参数解码,如果有知道其它方法的高手请赐教下,因为我找不到对这个参数编码的地方,所以也没法提供编码的函数
...全文
744 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
albertglory 2012-10-25
  • 打赏
  • 举报
回复
不错,路过学习
lijiaixn 2012-07-30
  • 打赏
  • 举报
回复
楼主,请问一下问题解决没有
怎么解码
lz2532178 2012-01-18
  • 打赏
  • 举报
回复
有没有高手指导下这串东西怎么解码
http://uim.sh.*%u2dof%u2d*.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b
lz2532178 2012-01-16
  • 打赏
  • 举报
回复
好吧 不得不承认这串东西相当的烂 但是实属无奈 小弟请各位高手指条明路,给个解决方法
soli11722984 2012-01-16
  • 打赏
  • 举报
回复
http://uim.sh.*%u2dof%u2d*.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b

这串东西真烂。。。。。

%u2d 去掉u,是按URL的方式解码
%u95e8%u6237%u516c%u544a%u7c7b,%后面跟的是unicode的码,所以都不能直接转换,要解析来解析去
lz2532178 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 soli11722984 的回复:]

那个。。。。。。地址哪里来的东西啊,终于看出是啥了

http://uim.sh.*%u2dof%u2d*.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b
把所有%换成\,然后用UNICODE解码
[/Quote]
因为很多东西看不到,这边能利用的就那么一个参数,如上将%换成\后出现报错(eclipse中),
%u2dof%u2d修改为\u2dof\u2d 报错信息:Invalid unicode
倔强的土豆 2012-01-16
  • 打赏
  • 举报
回复
soli11722984 2012-01-16
  • 打赏
  • 举报
回复
那个。。。。。。地址哪里来的东西啊,终于看出是啥了

http://uim.sh.*%u2dof%u2d*.com/lks/koa/lks_news.nsf/?opendatabase&Category=%u95e8%u6237%u516c%u544a%u7c7b
把所有%换成\,然后用UNICODE解码
lz2532178 2012-01-16
  • 打赏
  • 举报
回复
方法二报错如下:
2012-01-16 02:37:43,116 ERROR 未定义的错误 ==== http-8080-Processor22: com.landray.kmss.util.KmssMessageWriter.DrawMessages(KmssMessageWriter.java:123)
java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%)pattern - For input string: "u2"
at java.net.URLDecoder.decode(URLDecoder.java:173)
杀猪剑客 2012-01-16
  • 打赏
  • 举报
回复
两个方法都对吧,至于第一种方法,我觉得是你的编码有问题。做项目一般都是用UTF-8 ,很少用GBK吧?
soli11722984 2012-01-16
  • 打赏
  • 举报
回复
方法2是正确的,可你说报错,是报什么错

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧