【大拿大牛都进来吧】jsp中用超链接传递中文参数到第二页怎么接受才能不是乱码啊 都崩溃了 希望有人解答
1.jsp中代码 <a href=2.jsp?filename=中国人>点击此处</>
然后我应该怎么到第二个页面接才能接到中文啊  2.jsp 具体代码如下<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*,java.net.*" errorPage="" %>
<%


        String luanma=request.getParameter("fileName");



String str=new String(luanma.getBytes("ISO-8859-1"),"GBK");
   

String filenamedownload = "/upload/"+str;
String filenamedisplay =str;

response.setContentType("application/x-download");//设置为下载application/x-download



filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);

try
{
RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
if(dispatcher != null)
{
dispatcher.forward(request,response);
}
response.flushBuffer();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{

}

    
%>

解决方案 »

  1.   

    <%!
    public String codeToString(String str)
    {
       String s=str;
       try{
           byte tempB[]=s.getBytes("ISO-8859-1");
            s=new String(tempB);
           return s;
       }
       catch(Exception e)
       {
        return s;
       }
    }
    %>
    <%
       String xxxx= codeToString(request.getParameter("xxxx"));
    %>
      

  2.   

    不大对,我仔细看了下你的代码,你String filenamedisplay =luanma;试试看
      

  3.   

    中文问题。个人觉得还是utf-8比较好。注意检测你保存文件的似乎的文件格式是不是和你在页面总写的一致。
      

  4.   

    难道你说“%E5%88%A0%E9%99%A4“”这个为乱码你的代码看起来没有问题
      

  5.   

    中文问题。个人觉得还是utf-8比较好。注意检测你保存文件的似乎的文件格式是不是和你在页面总写的一致-----------------?没看明白
    上面的办法都试过了 但是还好使 出现的下载对话框是这样的2.jsp?fileName=中文.doc而不是  中文.doc
      

  6.   

    <%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*,java.net.*" errorPage="" %>这个应该没问题吧 不会有什么代码设置冲突吧 希望帮帮忙 弄一下午了
    好崩溃啊 呵呵
      

  7.   

    在Tomcat 服务器Server.xml 里配置URIEncoding="UTF-8"
      

  8.   

    页面链接encode,取的时候decode/**
         * 对字符串进行base64编码,主要用于网页汉字拼url
         * 
         * @param s 待编码字符串     * @return
         */
        public static String encodeBase64(Object o){
            String s = nvl(o);
            s = (new sun.misc.BASE64Encoder()).encode(s.getBytes());
            s =   URLEncoder.encode(s); 
            return s; 
        } 
        /**
         * 对字符串进行base64解码
         * 
         * @param s 待解码码字符串     * @return
         */
        public static String decodeBase64(Object o){
            String res = "";
            String s = nvl(o);
            BASE64Decoder base64 = new BASE64Decoder();
            try {
                res = new String(base64.decodeBuffer(s));
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return res;
        }
      

  9.   

    1.jsp代码如下
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>下载文件</title>
    </head><body>
    <center><h3>文件下载</h3></center>
    <p>文件:</p>
    <p>成长中淡去的几种情感</p>
    <center><a href="2.jsp?fileName=成长中淡去的几种情感.doc">点击下载</a></center></body>
    </html>  
    就这样 但是就是下载不下来啊
      

  10.   

    "在Tomcat 服务器Server.xml 里配置URIEncoding="UTF-8"
    server.xml根本没有这一项
      

  11.   

    对中文参数进行URL编码一下就行吧。
      

  12.   

    <a href=2.jsp?filename=<%=java.net.URLEncoder.encode("中国人") %>>点击此处</a>获取时使用:request.getParameter("filename").getBytes("ISO8859_1")
      

  13.   

    说不能从byte 转换成String"获取时使用:request.getParameter("filename").getBytes("ISO8859_1")"
      

  14.   

    这里你搞错了一个地方.response.addHeader("Content-Disposition","attachment;filename=" + luanma);这个 response.addHeader 的 attachment:filename=   这个不能用 filenamedisplay .
    这里的 filenamedisplay 是已经转成中文的了.再回到浏览器的时候就乱码了。
    这里要保留原来的 URL 编码格式 .就是直接 request.getParameter("fileName"); 得到的值.
      

  15.   

    server.xml
    <Connector
    port="80"               maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" 
       URIEncoding="UTF-8" />
      

  16.   

    这里你搞错了一个地方.response.addHeader("Content-Disposition","attachment;filename=" + luanma);这个 response.addHeader 的 attachment:filename=   这个不能用 filenamedisplay .
    这里的 filenamedisplay 是已经转成中文的了.再回到浏览器的时候就乱码了。
    这里要保留原来的 URL 编码格式 .就是直接 request.getParameter("fileName"); 得到的值但是我不接收值 就直接定义一个 String str="成长淡去的几种情感.doc" 就好用
      

  17.   

    真不知道为什么 大家有时间也建立一个看看
    我就是在1.jsp 2.jsp 同目录下建一个文件夹upload
    然后把upload里面随便放一个word文档  成长中逐渐淡去的几种情感.doc
    然后下在它 但就是不行 提示我保存的时候总出现乱码 然后按保存就说找不到指定路径
      

  18.   

    修改为:<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*,java.net.*" errorPage="" %>
    <%        request.setCharacterEncoding ("GBK");
            String luanma=request.getParameter("fileName");
            String str=new String(luanma.getBytes("ISO-8859-1"),"GBK");
       String filenamedownload = "/upload/"+str;
    String filenamedisplay =str;response.setContentType("application/x-download");//设置为下载application/x-downloadfilenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
    response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);try
    {
    RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
    if(dispatcher != null)
    {
    dispatcher.forward(request,response);
    }
    response.flushBuffer();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    finally
    {}    
    %>
    试试
      

  19.   

    使用 URLEncoder.encode 方法对消息进行编码 (URLDecoder.decode 方法可以用于解码) 
    总之你可以试一试java.net.URLEncoder.encode(yourStr);来对传递前的参数进行编码,针对不同的web服务器要有不同的编码,还不行就用 
    类似 String str = java.net.URLEncoder.encode(param,"GBK");
      String newStr = java.net.URLDecoder.decode(str,"ISO8859_1");这样来遍解码,总有一种转换对你的软件环境是正确的!
      

  20.   

    String r_user=new String(request.getParameter("r_user").getBytes("8859_1"),"GB2312"); public static String charConvert(String strSource)
    {
    if (strSource == null)
    {
    return "";
    }
    else
    {
    try
    {
    //return new String(strSource.getBytes("GB2312"), "ISO-8859-1");
    String str = new String(strSource.getBytes("ISO-8859-1"), "GB2312");
    System.out.println(str);
    return str;
                    }
                    catch (Exception ex)
    {
    System.out.println(ex.toString());
    return "";
                    }
    }
    }tt="中文";type = URLEncoder.encode(tt);XXX.jsp?num=type; 
    以前碰到过
    String r_user=new String(request.getParameter("r_user").getBytes("8859_1"),"GB2312");
    用这个和tt="中文";type = URLEncoder.encode(tt);XXX.jsp?num=type; 这个都可以解决.
    中间的类是可以做一个类,以后只要调用就行了.
      

  21.   

    试试下载这样的中英文都带的文件名吧。 中国abc成长中淡去的几种情感.doc
      

  22.   

    <% request.setCharacterEncoding("gb2312");%>
    加到你的第一个网页上应该就没问题了
    试试
      

  23.   

    最好的方法,应该加一个中文转码的过滤器
    这样,即使用formbean封装了,也可以转码
      

  24.   

    一、JSP页面显示乱码  在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>
    二、表单提交中文时出现乱码 
    通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下: 
    <%@ page contentType="text/html; charset=gb2312"%> 
    <% 
    request.seCharacterEncoding("gb2312"); 
    %>三、数据库连接出现乱码 
    只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。四、数据库的显示乱码 
    在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下: 
    public class Convert { 
    /** 把ISO-8859-1码转换成GB2312 
    */ 
    public static String ISOtoGB(String iso){ 
    String gb; 
    try{ 
    if(iso.equals("") || iso == null){ 
    return ""; 

    else{ 
    iso = iso.trim(); 
    gb = new String(iso.getBytes("ISO-8859-1"),"GB2312"); 
    return gb; 


    catch(Exception e){ 
    System.err.print("编码转换错误:"+e.getMessage()); 
    return ""; 



    把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。以上信息 来自
    http://blog.csdn.net/wangyun71/archive/2005/12/14/552534.aspx
      

  25.   

    用hidden传参试试,编码确实是很烦的问题
      

  26.   

    传:"2.jsp?filename="+URLEncoder.encode("中国人","UTF-8")
    收:request.getParameter("filename"));
      

  27.   

    在接收页面用以下代码接受 参数:String fname=request.getParameter("name");//name是参数名fname=new String(fname.trim().getBytes("ISO8859_1"),"***");// *** 处填写你所希望转换成的编码 可以是 UTF-8,GBK 等等用的好的话记得给分
      

  28.   

    server.xml
    <Connector
    port="80"               maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" 
       URIEncoding="GBK" />这是部署阶段..如果是在JBUILDER中开发
    则改文件
    项目名\Tomcat\conf\server8080.xml
    同时把其中的注释去掉,再重启编绎
      

  29.   

    最保险的就是将页面接收的字段转一次码 
    这是我写的方法,楼主可以试试
    String insql(String str){
    try
      {
      String temp_p=str;
      byte[] temp_t=temp_p.getBytes("ISO8859-1");
      String temp=new String(temp_t,"UTF-8");
      return temp;
      }
      catch(Exception e)
      {
       
      }
      return "null";
     }