日期:2014-05-20  浏览次数:20677 次

java后台解码问题
问题是这样的: 现在有两个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);
这个方法,代码运行到这里报错,不知道什么原因

这边我的目的就是把那个参数解码,如果有知道其它方法的高手请赐教下,因为我找不到对这个参数编码的地方,所以也没法提供编码的函数

------解决方案--------------------
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的码,所以都不能直接转换,要解析来解析去