过滤器,要不就用
public static String toChinese(String str) {
  try{
    if(str==null){
      return null;
    }
    else{
      str=new String(str.getBytes("ISO8859_1"),"GBK");
      return str;
    }
  }
  catch(Exception e){
    return null;
  }
}
这样的转回中文

解决方案 »

  1.   

    一个例子
    package com.zy.oa.util;import java.io.*;
    import java.util.*;
    import java.sql.*;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.ServletInputStream;
    import javax.servlet.ServletException;/**
     *  该类提供文件上传服务
     */public class UpLoad{    private static String newline = "";
        private String uploadDirectory = "D:/jakarta-tomcat-4.0.1/webapps/oa/upload";
        private String ContentType = "";
        private String CharacterEncoding = "";
        private String strFileName = "";
        private long iFileSize = 0;
        private Hashtable values = null;
        private Vector fileNames = null;
        private Vector originalFileNames = null;
        private Vector existFileNames = null;
        private String fileText = null;
        private String originalFileText = null;
        public UpLoad(){
            values = new Hashtable();
            fileNames = new Vector();
            originalFileNames = new Vector();
            AttachmentManage manageFileNames = new AttachmentManage();
            Global global = new Global();
            try {
                uploadDirectory = global.getVarValue(Global.UpLoadDir);
            } catch (Exception e) {
                e.printStackTrace();
            }   
        }    private String getFileName(String s){        int i = s.lastIndexOf("\\");
            if(i < 0 || i >= s.length() - 1){
                i = s.lastIndexOf("/");
                if(i < 0 || i >= s.length() - 1)
                    return s;
            }
            strFileName = s.substring(i + 1);
         //   Logger.log(strFileName);
            return s.substring(i + 1);
        }    public String getUploadFileName(){
            return strFileName;
        }    public long getFileSize(){
            return iFileSize;
        }    public void setUploadDirectory(String s){
            uploadDirectory = s;
            Logger.log("上传路径是:" + s);
        }    public void setContentType(String s){
            ContentType = s;
            int j;
            if((j = ContentType.indexOf("boundary=")) != -1){
                ContentType = ContentType.substring(j + 9);
                ContentType = "--" + ContentType;
            }
        }    public void setCharacterEncoding(String s){
            CharacterEncoding = s;
        }    private String getName(String src){
            int i = src.indexOf("name=\"");
            int j = src.lastIndexOf("\"");
            return new String(src.substring(i + 6, j));
        }    private String getValue(String src){
            return null;
        }    public Hashtable getValues(){
            return this.values;
        }
        public Vector getFileNames(){
          return this.fileNames;
        }    public void uploadFile( HttpServletRequest req) throws ServletException,
    IOException{
            //Logger.log(req.getCharacterEncoding());
            //Logger.log(req.getContentType());        setCharacterEncoding(req.getCharacterEncoding());
            setContentType(req.getContentType());
            uploadFile(req.getInputStream());
        }    private void uploadFile( ServletInputStream servletinputstream) throws
    ServletException, IOException{        AttachmentManage manageFileNames = new AttachmentManage();
            existFileNames = manageFileNames.getNameList(this.uploadDirectory);
            String filename = null;
            byte Linebyte[] = new byte[4096];
            int ai[] = new int[1];
            String line= null;
            String fileTextTemp = "";
     //    while((line=readLine(Linebyte, ai, servletinputstream, CharacterEncoding))!=null)
      //    {Logger.log(line);}      do{
           // 得到文件名
           //如果最后读出的一行包括文件名则直接对这行处理
            if (line != null && line.indexOf("filename=") >= 0){
           //     String aline = "";
            //    aline = new String(line);
                int j = line.indexOf("name=");
                if(j>=0){
                  line = line.substring(j + 6);
                  fileTextTemp = line.substring(0,line.indexOf("\""));
                }
                int i = line.indexOf("filename=");
                if(i >= 0){
                    line = line.substring(i + 10);
                    if((i = line.indexOf("\"")) > 0)
                        line = line.substring(0, i);
                    break;
                }
             //   int j = aline.indexOf("name=");         }
            else{
            //读出的最后一行不包括文件名,则继续读取
              while((line = readLine(Linebyte, ai, servletinputstream,
      CharacterEncoding)) != null){
              //  Logger.log(line);
                //得到文件的name域
                int j = line.indexOf("name=");
                if(j>=0){
                  line = line.substring(j + 6);
                  fileTextTemp = line.substring(0,line.indexOf("\""));
                }
      

  2.   

    int i = line.indexOf("filename=");
                if(i >= 0){
                    line = line.substring(i + 10);
                    if((i = line.indexOf("\"")) > 0)
                        line = line.substring(0, i);
                    break;
                }
              }
            }
          //filename 为文件的路径 和文件名
              filename = line;
          //得到文件名 如果文件名正常 则开始读入上载文件
          if(filename != null && (filename.indexOf("\"") == -1)){
              int Conflict_ID = 0;          filename = getFileName(filename);
              //保存原始信息
              if(!fileTextTemp.equals("text"))
                this.originalFileNames.add(new String(filename));
              else
                this.originalFileText = filename;          //如果附件列表中 则改名防止冲突
              if(existFileNames.contains(filename)){
                try{
                Conflict_ID = KeyGenerator.getNewId("Conflict_ID");
                }catch(SQLException e){e.printStackTrace();}
                filename = Conflict_ID + "_" + filename;
              }      //   如果文件列表中不包含该文件 并且不是正文,则加入
              if(!this.fileNames.contains(filename) && (!fileTextTemp.equals("text")))
                this.fileNames.add(new String(filename));
              else//正文的名字
                fileText = new String(filename);
              String sContentType = readLine(Linebyte, ai, servletinputstream,
      CharacterEncoding);
              if (sContentType != null)
                  if(sContentType.indexOf("Content-Type") >= 0)
                      readLine(Linebyte, ai, servletinputstream, CharacterEncoding);            File file = null;
                FileOutputStream fileoutputstream = null;            try{
                   file = new File(uploadDirectory, filename);
                   fileoutputstream = new FileOutputStream(file);
                }catch(Exception e){e.printStackTrace();}            String tempStr = readLine(Linebyte, ai, servletinputstream,
    CharacterEncoding);
            //    Logger.log(tempStr);
                //  读上载文件
                while((tempStr != null)&&(tempStr.indexOf(this.ContentType) == -1)){
                 //   Logger.log(tempStr);
                    fileoutputstream.write(Linebyte, 0, ai[0]);
                    tempStr = readLine(Linebyte, ai, servletinputstream,
    CharacterEncoding);
                    line = tempStr;
                }//end while
           //     fileoutputstream.flush();
                fileoutputstream.close();
              }//end if
           //   System.out.println("line:" + line);      }while(line != null);
        }    private String readLine(byte Linebyte[], int ai[], ServletInputStream
    servletinputstream, String CharacterEncoding){
            try{
                ai[0] = servletinputstream.readLine(Linebyte, 0, Linebyte.length);
                if(ai[0] == -1)
                return null;
            }catch(IOException _ex){
                _ex.printStackTrace();
                return null;
            }        try{
                if(CharacterEncoding == null){
                    //用缺省的编码方式把给定的byte数组转换为字符串
                    return new String(Linebyte, 0, ai[0]);
                }else{
                    //用给定的编码方式把给定的byte数组转换为字符串
                    return new String(Linebyte, 0, ai[0], CharacterEncoding);
                }
            }catch(Exception _ex){
                _ex.printStackTrace();
                return null;
            }
        }
      public String getUploadDirectory() {
        return uploadDirectory;
      }
      public String getFileText() {
        return fileText;
      }
      public Vector getOriginalFileNames() {
        return originalFileNames;
      }
      public String getOriginalFileText() {
        return originalFileText;
      }
    }
      

  3.   

    你说的中文意思是中文文件名变成乱码吧? 文件内容应该没问题吧?
    如果是中文文件名变乱码的解决之道就是:FormFile file = form.getUploadFile();
    String fileName = new String(file.getFileName().getBytes(),"UTF-8");http://www.javayou.com
      

  4.   

    楼主解决问题了吗?
    能给份文件上传的代码吗?要你做的,谢谢
     [email protected]