在java中我需要将搜索引擎的url转化为他原来的地址。。
google编码方式utf-8:
http://www.google.cn/search?hl=zh-CN&newwindow=1&q=java%E8%B0%83%E7%94%A8javascript&revid=201440269&ei=rG60ScjPIozXkAX6vZHXBA&sa=X&oi=revisions_inline&resnum=0&ct=broad-revision&cd=1
转换为
http://www.google.cn/search?hl=zh-CN&newwindow=1&q=java调用javascript&revid=201440269&ei=rG60ScjPIozXkAX6vZHXBA&sa=X&oi=revisions_inline&resnum=0&ct=broad-revision&cd=1
baidu编码方式ansi:
http://www.baidu.com/s?wd=java%B5%F7%D3%C3javascript
转换为
http://www.baidu.com/s?wd=java调用javascript
这两种转换方式用java怎么写?
希望各位高手能帮个忙,谢谢!!!
[code="java"]
public static void main(String[] args) {
try {
String s = "http://www.google.cn/search?hl=zh-CN&newwindow=1&q=java%E8%B0%83%E7%94%A8javascript&revid=201440269&ei=rG60ScjPIozXkAX6vZHXBA&sa=X&oi=revisions_inline&resnum=0&ct=broad-revision&cd=1";
System.out.println(URLDecoder.decode(s, "UTF-8"));
s = "http://www.baidu.com/s?wd=java%B5%F7%D3%C3javascript";
System.out.println(URLDecoder.decode(s, "gb2312"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
[/code]
用URLdecoder方法试试吧
手工对字符串编码解码的方法为:
java.net.URLEncoder.encode("测试","UTF-8");
java.net.URLDecoder.decode("%E6%B5%8B%E8%AF%95%26%3Faaa","UTF-8");
这个方法适用于自己从原始字符串中进行解码处理。
tomcat服务器的处理url编码的方法:
修改tomcat的server.xml增加指定的编码,以代替tomcat默认的ISO-8859-1。
需要增加的参数为:URIEncoding,
比如下面的例子是制定解码使用UTF-8,
maxThreads="800" minSpareThreads="25" maxSpareThreads="100"
enableLookups="false" redirectPort="8443" acceptCount="0"
debug="0" connectionTimeout="20000" URIEncoding="UTF-8"
disableUploadTimeout="true" />
如果用到了apache与tomcat 的整合,则还需要:
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100" acceptCount="0"/>
(这个方法最简单方便,但是使用这种的方法之后,代码中就不需要也能有new String(strvalue.getBytes("ISO8859-1","GBK"); 这样的处理方式)
3.对于已经部署的系统,可能已经有其他同事对编码使用了
new String(strvalue.getBytes("ISO8859-1","GBK");
这样的方法作了处理,这个时候使用第二种方法就可能会影响到其它模块的正常使用,
因此,我们可以自己重新解析queryString我封装了几个方法。使用重新封装的方法可以在不影响原来系统的情况下,正确的获得参数。
封装的代码如下,供大家参考:
/**
/**
/**
/**
public static void main(String[] args) {
//该例子演示解码。
//jsp和servlet中调用
// System.out.println(getParameterFromQueryString(request.getQueryString(), "q"));
//该例子示意的是gogole的url中的queryString。
System.out.println(getParameterFromQueryString(
"hl=zh-CN&newwindow=1&q=%E6%B5%8B%E8%AF%95%26%3Faaa&meta=", "q"));
}