用jspSmart上传文件时,如果文件名中有中文,上传后显示的文件名变成了乱码,在网上找了几个自称修改了源代码后能解决乱码问题的jar包,可是还是没能解决文件名乱码问题,哪位大侠能指点一下?

解决方案 »

  1.   

    界面用的UTF-8的编码,在servlet中也将request对象编码设置为了UTF-8,但它就是出现乱码。
      

  2.   

    String fileName = URLEncoder.encode(pd.getName() + "_" + pd.getVersion() + ".zip", "utf-8");
    楼主试下看看
      

  3.   

    页面统一使用gb2312,然后写个过滤器设置编码也为gb2312
    应该没有问题。
      

  4.   

    直接将上传的文件名转存为:String ext = myFile.getFileExt(); // 取得后缀名
    SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    Date dt = new Date(System.currentTimeMillis()); String filename =fmt.format(dt);
    saveurl = request.getRealPath("\\")+"file\\";

    saveurl +=filename + "." + ext;// 最终文件的保存路径
    String name= filename + "." + ext; 这样既解决了文件名的乱码问题又解决了文件名相同的问题
      

  5.   

    LZ参考下吧,
    有很多方法值得看下
    http://topic.csdn.net/u/20081225/15/7f53258e-4543-4802-8fe5-6ff7033bf9b1.html
      

  6.   

    重新命名上传的文件
            // 重命名文件
    @SuppressWarnings("static-access")
    private String renameFile() {
    String t = new Timestamp(new Date().getTime()).toString();
    t = t.replaceAll("-", "");
    t = t.replaceAll(":", "");
    t = t.replace(".", "");
    t = t.replaceAll(" ", "");
    Random rd = new Random();
    int rdNum = rd.nextInt(Integer.MAX_VALUE);
    return (t + rdNum);
    }
      

  7.   

    如果你的文件名是从别的地方或页面传递过来的你就将文件名编码:
    fileName = URLEncoder.encode(fileName,"GBK");再在处理上传的页面将文件名解码解码:
    (注:fileName是文件名,它在传递过程中编码可能会乱,
    这时要注意将文件名转为ISO-->fileName = new String(fileName .getBytes("xxxx"), "ISO-8859-1");"xxx"是它在传递过程中改变的编码)
    fileName = URLDecoder.decode(fileName,"GBK");如果文件名是在处理上传的页面给定的就不用再编码(encode),直接解码(decode),但在解码时同样注意文件名是不是ISO。祝你好运!
      

  8.   

    感觉用struts的上传文件和下载也功能蛮好,试过了可以上传中文内容的文件不乱码,要不用jsmartcom_zh_CN.jar这个包,可以上传中英文文件,不用过滤,要不然要更改源代码才能上传中文而不乱码,上百度应该可以找到上面那个包的.
      

  9.   

    wefaaaaafwefwef为绯闻绯闻