我使用了过滤器,能够处理页面的中文问题,但上传文件时,我想得到文件名字可是中文名字总是乱码,部分代码:
                ServletInputStream sis = request.getInputStream();
                int a = 0;
int k = 0;
String s = "";
while ((a = sis.readLine(b, 0, b.length)) != -1) {
s = new String(b, 0, a);
if ((k = s.indexOf("filename=")) != -1) {
s = s.substring(k + 10);
k = s.indexOf("\"");
s = s.substring(0, k);
sourcefile[count] = s;
k = s.lastIndexOf(".");
                                System.out.println(s.substring(s.lastIndexOf("\\")+1,k);
                        }
                }文件名字时英文没有问题,中文就是乱码,谢谢帮忙看看

解决方案 »

  1.   

    [code]
    sis = request.getInputStream();
    int a = 0;
    int k = 0;
    String s = "";
    while ((a = sis.readLine(b, 0, b.length)) != -1) {
    s = new String(b, 0, a);
    if ((k = s.indexOf("filename=")) != -1) {
    s = s.substring(k + 10);
    k = s.indexOf("\"");
    s = s.substring(0, k);
    sourcefile[count] = s;
    k = s.lastIndexOf(".");
                                System.out.println(s.substring(s.lastIndexOf("\\")+1,k); 
                           }
                   }[/code]
      

  2.   

    不知怎么回答.
    你可以选用Apache的文件上传插件,这个不会.还有你传送文件名时,想办法带上编码格式.
      

  3.   

    上传文件method=post还是get?
    另:楼主的代码貌似对这个问题没什么用
      

  4.   


    String fileName = "中文文件名";
    String formatFileName = new String(fileName.getBytes("GBK"),"ISO8859_1");
      

  5.   

    5楼的,我的是UTF-8,POSt请求提交,下边输出的还是乱码public void doPost(HttpServletRequest request,HttpServletResponse response)
    throws  ServletException, IOException {
    sis = request.getInputStream();
    int a = 0;
    int k = 0;
    String s = "";
    while ((a = sis.readLine(b, 0, b.length)) != -1) {
    s = new String(b, 0, a);
    if ((k = s.indexOf("filename=")) != -1) {
    s = s.substring(k + 10);
    k = s.indexOf("\"");
    s = s.substring(0, k);
    sourcefile[count] = s;
    k = s.lastIndexOf(".");
    suffix[count] = s.substring(k+1);
    System.out.println(new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("UTF-8"),"ISO-8859-1"));
    }
    }
      

  6.   


    public void doPost(HttpServletRequest request,HttpServletResponse response) 
    throws  ServletException, IOException { 
    sis = request.getInputStream(); 
    int a = 0; 
    int k = 0; 
    String s = ""; 
    while ((a = sis.readLine(b, 0, b.length)) != -1) { 
    s = new String(b, 0, a); 
    if ((k = s.indexOf("filename=")) != -1) { 
    s = s.substring(k + 10); 
    k = s.indexOf("\""); 
    s = s.substring(0, k); 
    sourcefile[count] = s; 
    k = s.lastIndexOf("."); 
    suffix[count] = s.substring(k+1); 
    System.out.println(new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("UTF-8"),"ISO-8859-1")); 
      

  7.   

    你用的是什么ide?他的编码格式是utf-8吗?
      

  8.   

    myeclipse开发的发布用的是tomcat
      

  9.   

    乱码是问号还是杂乱字符?如果是问号的话,这样看看
    System.out.println(new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("iso-8859-1"),"UTF-8")); 
      

  10.   

    上传文件"新建文件.txt"s.substring(s.lastIndexOf("\\")+1,k).getBytes("UTF-8"),"ISO-8859-1")); 这样的话是乱的
      

  11.   

    上传文件"新建文件.txt"System.out.println(new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("GBK"),"ISO-8859-1"));
    乱码为:
      

  12.   

    直接输出s.substring(s.lastIndexOf("\\")+1,k)
    乱码为:
      

  13.   

    new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("ISO-8859-1"),"UTF-8")
      

  14.   


    new String(s.substring(s.lastIndexOf("\\")+1,k).getBytes("ISO-8859-1"),"UTF-8")乱码为:
      

  15.   

    你这里取的文件名字是在文件内部的吧?
    a.txt
    {filename=a.txt
    ......
    }
    {}中间的表示文件的内容。
    你将上传的文件用记事本默认的格式,看看还乱码不?
      

  16.   

    操作系统的字符集(中文默认gbk)和你上传的文件的字符集(你的是utf-8)不一样,也是乱码的原因。所以让你上传gbk编码的文件试一下,java代码中不需要进行任何转码。
      

  17.   

    我用struts + hibernate 做上传时也老是出错
      

  18.   

    我现在用fckeditor2.6怎么写个上传页面呢?编辑页面
    已经正常了.我想弄个jsp页面可是怎么调用fckeditor的上传呢?
      

  19.   


    String fileName = "中文文件名";
    String formatFileName = new String(fileName.getBytes("ISO8859_1"),"GBK");
      

  20.   

    以前我做上传的时候在提交的时候没有设置上传方式,楼主你看看自己的上传是不是get方式呢,如果是那你改成post就没问题了