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运行是没有问题的,请高手指教,谢谢!!!!!!!

解决方案 »

  1.   

    用new URL(URL.encoding("http://www.baidu.com/s?wd=中文", "GB2312"));试试看
      

  2.   

    中文肯定会出现乱码的,不是WEBLOGIC的问题.任何中文请求都是会被转成%?%?%?这种格式的
    楼上的应该可以解决问题,不过每次请求都要转.有种更方便的解决办法,就是在你的程序里加入一个字符串过滤类(Filter类),在字符串过滤类里设置编码格式和页面的编码格式都为gb2312或gbk就不会出现乱码问题了
      

  3.   

    用new URL(URL.encoding("http://www.baidu.com/s?wd=中文", "GB2312"))
    不行呀,编译不了,出错了!
      

  4.   

    楼主可以试一下以下这种方法:如content= URLEncode.encode(content);
    但这种编码依赖于本地平台
      

  5.   

    首先所有的jsp文件都加上:
    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。
      

  6.   

    对于直接用url串传递的中文参数,filter也不好使,需要自己手动去转码
      

  7.   

    to inter37(小黑):我一开始已经说是WEBLOGICB了,晕呀
      

  8.   

    还是解决不了问题,其实问题是如何实现把中文转为ENCODE.
      

  9.   

    解决办法:
    添加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>