URL地址中的参数是英文就没有问题,可以访问,但参数换成中文就访问不了,参数变成乱码提交上去了。我是用JSP调用下面的类函数的。注意我用的是WEBLOGIC 7.0,详细代如下:
import java.net.*;
import java.io.*;
import java.util.Date;public class SEARCHKeyWord
{
public void SearchKW(String strText)throws Exception
{
int c=0;
URL hp=new URL("http://www.baidu.com/s?wd=你好");
URLConnection hpCon=hp.openConnection();
InputStream input=hpCon.getInputStream();
InputStreamReader input2=new InputStreamReader(input,"GB2312");
while((c=input2.read())!=-1){
System.out.print((char)c);
}
input.close();
input2.close();
}
}这样就不用正常搜索出来的,但将上面URL的一行代码改为
URL hp=new URL("http://www.baidu.com/s?wd=Hello");
关键字变为英文就可以正常搜索出来,我初步认为是WEBLOGIC,因为我直接用JDK运行是没有问题的,请高手指教,谢谢!!!!!!!
import java.net.*;
import java.io.*;
import java.util.Date;public class SEARCHKeyWord
{
public void SearchKW(String strText)throws Exception
{
int c=0;
URL hp=new URL("http://www.baidu.com/s?wd=你好");
URLConnection hpCon=hp.openConnection();
InputStream input=hpCon.getInputStream();
InputStreamReader input2=new InputStreamReader(input,"GB2312");
while((c=input2.read())!=-1){
System.out.print((char)c);
}
input.close();
input2.close();
}
}这样就不用正常搜索出来的,但将上面URL的一行代码改为
URL hp=new URL("http://www.baidu.com/s?wd=Hello");
关键字变为英文就可以正常搜索出来,我初步认为是WEBLOGIC,因为我直接用JDK运行是没有问题的,请高手指教,谢谢!!!!!!!
楼上的应该可以解决问题,不过每次请求都要转.有种更方便的解决办法,就是在你的程序里加入一个字符串过滤类(Filter类),在字符串过滤类里设置编码格式和页面的编码格式都为gb2312或gbk就不会出现乱码问题了
不行呀,编译不了,出错了!
但这种编码依赖于本地平台
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。) 1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行: <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"
/>
2)重启tomcat,一切OK。
添加Filter.
==============================================================myFilter.java
package com.xiaoshan.hibernate.Filter;
import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: xiaoshan.com</p>
*
* @author xiaoshan
* @version 1.0
*/
public class myFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true; public void destroy() {
this.encoding = null;
this.filterConfig = null;
} public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(selectEncoding(request));
}
chain.doFilter(request, response);
} public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null) {
this.ignore = true;
} else if (value.equalsIgnoreCase("true") ||
value.equalsIgnoreCase("yes")) {
this.ignore = true;
} else {
this.ignore = false;
}
} protected String selectEncoding(ServletRequest request) {
return (this.encoding);
} public FilterConfig getFilterConfig() {
return filterConfig;
} public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}}=======================================================web.xml
<filter>
<filter-name>Filter</filter-name>
<filter-class>com.xiaoshan.hibernate.Filter.myFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>