CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

乱码问题,高手指点,再线等,急急......

楼主daly1314(黑眼睛)2004-12-03 08:28:20 在 Java / Web 开发 提问

用response.sendRedirect("/faceupload/"+文件名)  
  如果文件名是中文出现乱码,怎么解决呀 问题点数:20、回复次数:12Top

1 楼bp69(不要偷懒,自强不息)回复于 2004-12-03 08:38:34 得分 2

别用中文做文件名Top

2 楼daly1314(黑眼睛)回复于 2004-12-03 08:41:00 得分 0

不行呀Top

3 楼flyRoy(芸枫)回复于 2004-12-03 08:47:12 得分 4

做下内码转换啊  
  import   java.io.*;  
   
  public   class   StringConverter   {  
      public   StringConverter()   {  
      }  
   
      public   static   String   convert(String   s){  
      byte[]   tmpbyte   =   null;  
      try   {  
          tmpbyte   =   s.getBytes("ISO8859_1");  
      }  
      catch   (UnsupportedEncodingException   ex)   {  
          ex.printStackTrace();  
      }  
        String   ret=new   String(tmpbyte);  
        return   ret;  
    }  
  }Top

4 楼corsica(corsica)回复于 2004-12-03 08:47:58 得分 4

String   newfilename   =   new   String(oldfilename.getBytes("iso-8859-1"),   "utf-8");Top

5 楼ningIII(小宁)回复于 2004-12-03 08:48:12 得分 4

如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出,程序中应该采用字符流来处理输入和输出,具体来说,应用以下面向字符型节点流类型:  
          对文件:FileReader,FileWrieter    
                  其字节型节点流类型为:FileInputStream,FileOutputStream  
          对内存(数组):CharArrayReader,CharArrayWriter  
                  其字节型节点流类型为:ByteArrayInputStream,ByteArrayOutputStream  
          对内存(字符串):StringReader,StringWriter  
          对管道:PipedReader,PipedWriter  
                  其字节型节点流类型为:PipedInputStream,PipedOutputStream  
          同时,应该用以下面向字符型处理流来处理输入和输出:  
          BufferedWriter,BufferedReader  
                  其字节型的处理流为:BufferedInputeStream,BufferedOutputStream  
          InputStreamReader,OutputStreamWriter  
          其字节型的处理流为:DataInputStream,DataOutputStream  
          其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流,如:  
          InputStreamReader   in   =   new   InputStreamReader(System.in,"GB2312");  
          OutputStreamWriter   out   =   new   OutputStreamWriter   (System.out,"GB2312");  
   
  http://www.pconline.com.cn/pcedu/empolder/gj/java/0405/368760.htmlTop

6 楼daly1314(黑眼睛)回复于 2004-12-03 10:04:48 得分 0

<%@   page   contentType="text/html;   charset=utf-8"   %>  
  <%  
  String   filename=   new   String   (request.getParameter("filename").getBytes("ISO-8859-1"),"GB2312");%><%  
   
  response.sendRedirect("/upload1/"+newfilename);%>  
   
  newfilenamen是乱码怎么解决呀Top

7 楼daly1314(黑眼睛)回复于 2004-12-03 10:56:24 得分 0

upTop

8 楼daly1314(黑眼睛)回复于 2004-12-03 10:58:27 得分 0

我是想用浏览器直接打开response.sendRedirect("/upload1/"+newfilename);%>  
  newsfilename,不能打开的就下载,可是文件名是中文就不行,出现了乱码  
  请问怎么解决呀Top

9 楼zhufei_taikang()回复于 2004-12-03 11:43:11 得分 0

upTop

10 楼yrsheng(以德服人)回复于 2004-12-03 14:08:06 得分 2

newfilename怎么编码都没有用的,是http不认中文路径,要在服务器的配置里改。Top

11 楼hrui99(助人为本,潜水为行)回复于 2004-12-03 14:44:25 得分 4

找段代码给你,自己参考吧  
  <%@page   contentType="text/html;   charset=gb2312"%>  
  <%  
  String   sre   =   null;  
  String   uid=null;  
   
      uid   =   (String)   session.getValue("userid");  
      if(uid==null)  
      {  
            sre   =   "您还没有登录";  
            System.out.println(sre);  
            session.putValue("result",sre);  
            getServletConfig().getServletContext().getRequestDispatcher("/PBResult.jsp").forward(request,response);  
            return;  
      }  
  %>  
  <%@   page   language="java"   import="com.jspsmart.upload.*,java.sql.*,java.util.*,java.io.*   "%>    
  <%--   使用SmartUpload   Java   Bean   --%>    
  <jsp:useBean   id="mySmartUpload"   scope="page"   class="com.jspsmart.upload.SmartUpload"   />    
  <%    
  request.setCharacterEncoding("GB2312");  
  String   downpath=request.getParameter("path");  
  System.out.println("down   file:"+downpath);  
   
      java.io.File   file=new   java.io.File(downpath);  
      if(!file.exists())   {  
            sre   =   "下载文件不存在!";  
            System.out.println(sre);  
            session.putValue("result",sre);  
            getServletConfig().getServletContext().getRequestDispatcher("/ReMess.jsp").forward(request,response);  
            return;  
      }  
       
      out.clear();  
      response.setContentType("application/octet-stream");  
      response.setHeader("Content-disposition","attachment;   filename="+new   String(file.getName().getBytes("GBK"),"ISO8859_1"));  
      //response.setHeader("Content-disposition",Util.Encode("attachment;   filename="+file.getName()));  
      DataInputStream   dis=new   DataInputStream(new   FileInputStream(file));  
      OutputStream   os=response.getOutputStream();  
   
    try{  
      byte[]   buf=new   byte[1024];  
      int   left=(int)file.length();  
      int   read=0;  
      while(left>0)  
      {read=dis.read(buf);  
        left-=read;  
        os.write(buf,0,read);  
      }  
      }  
      catch(Exception   e)  
      {  
            sre   =   "文件下载失败!";  
            System.out.println(sre+e.getMessage());  
            session.putValue("result",sre);  
            getServletConfig().getServletContext().getRequestDispatcher("/ReMess.jsp").forward(request,response);  
            dis.close();  
            os.close();  
            out.close();  
            return;      
      }  
      sre   =   "文件下载成功!";  
      System.out.println(sre);  
      dis.close();  
      os.close();  
      out.close();    
      return;    
   
  /*  
  //进行初始化操作    
  mySmartUpload.init(config);  
  mySmartUpload.service(request,response);    
   
   
  //设定contentDisposition为null以禁止浏览器自动打开文件,  
  //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为  
  //doc时,浏览器将自动用word打开它。扩展名为pdf时,  
  //浏览器将用acrobat打开。  
   
  mySmartUpload.setContentDisposition(null);  
   
  //进行下载操作  
  try{    
  mySmartUpload.downloadFile(downpath);    
  }    
  catch(Exception   e){    
            sre   =   "文件下载失败!";  
            System.out.println(sre+e.getMessage());  
            session.putValue("result",sre);  
            getServletConfig().getServletContext().getRequestDispatcher("/ReMess.jsp").forward(request,response);  
            return;  
  }    
            sre   =   "文件下载成功!";  
            System.out.println(sre);  
            session.putValue("result",sre);  
            getServletConfig().getServletContext().getRequestDispatcher("/ReMess.jsp").forward(request,response);  
            return;  
  */  
  %>Top

12 楼xinlcao(老猫在线)回复于 2004-12-03 15:08:06 得分 0

使用java.net.URLEncoder.encode()将中文转一下格式试试。Top

相关问题

  • 急!急!急!急求指点,在线等---
  • 远程打印问题.高手指点!!!!急急急,在线等
  • 请高手指点??急急急急急!!!!
  • 急急急!!!关于在线程中动态创建控件的问题,请高手指点!!!急急急
  • 急急急,乱码问题!!!!!
  • 寻求SQL语句,求总金额,在线等,急急急,高手指点
  • 急急!告诉指点!奇怪线程问题求教?
  • ASP翻页不成功,高人指点,在线等。急急!
  • 急急!盼高手指点,在线等待!
  • 急急,请高手指点!

关键词

  • 乱码
  • 文件名
  • 节点
  • 中文
  • 解决
  • newfilename
  • tmpbyte
  • 型节点流类型

得分解答快速导航

  • 帖主:daly1314
  • bp69
  • flyRoy
  • corsica
  • ningIII
  • yrsheng
  • hrui99

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo