你的文件名哪里取到的?? 取到的文件名是什么字符集你知道吗?下面2个分别试一下吧。
1)
new String(("中文名.doc").getBytes("UTF-8"), System.getProperty("sun.jnu.encoding"));
2)
new String(("中文名.doc").getBytes("GBK"), System.getProperty("sun.jnu.encoding"));

解决方案 »

  1.   

    new String(('中文名.doc').getBytes('UTF-8'), 'UTF-8');
    改成
    new String(('中文名.doc').getBytes(这里面的格式用这句代码所在。java文件的默认格式), 这里的格式用传过来的。java文件或者页面的默认格式或者自己设置的格式);
      

  2.   

    new String(('中文名.doc').getBytes('UTF-8'), 'UTF-8');
    改成
    new String(('中文名.doc').getBytes(这里面的格式用这句代码所在。java文件的默认格式), 这里的格式用传过来的。java文件或者页面的默认格式或者自己设置的格式);
      

  3.   

    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream('中文名.doc'));
    改成
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream('中文名.doc'),"UTF-8");
    在out创建的时候指定编码就好了,之后转码不见得有效果,况且你写的也不对。
      

  4.   

    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream('中文名.doc'));
    改成
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream('中文名.doc'),"UTF-8");
    在out创建的时候指定编码就好了,之后转码不见得有效果,况且你写的也不对。
      

  5.   

    看看linux有没有装中文字符集  若装好了的话 试下new String(("中文名.doc").getBytes("UTF-8"), "gbk")
      

  6.   

    我碰到同样的问题,文件名输出到后台是正确的中文文件名,写到linux服务器上,
    new String(("中文名.doc").getBytes("UTF-8"), "gbk")翻来倒去的转码得到的是各种乱码
      

  7.   

    这跟你linux 也有关系
    把操作系统的编码改成utf-8
    在统一代码的编码