servlet 3.0获取表单的中文信息,显示到结果页面,那些信息是正确(没有乱码)的,但是我给servlet加上上传文件的功能之后,那些中文信息就成乱码了(不是上传的文件名)。这要怎么解决啊?下面图片是上传功能还没实现:下面图片是实现上传功能:表单jsp代码
   
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
……
 <form method="post"  action="newupload" enctype="multipart/form-data">
          <table width="700">
       <tr>
    <td>计划名称:</td>
    <td><input name="name" type="text" size="30" maxlength="20"></td>
    </tr>
      <tr>
    <td>计划内容:</td><td><input name="test" type="text" size="30" maxlength="20"></td>
    </tr>
   <tr>
    <td> 附件:</td><td><input type="file" name="file"></td>
    </tr>
<tr>
<td><input type="submit"  value="上传" ></td>
</tr>
</table>
    </form>
servlet代码 public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//上传功能
request.setCharacterEncoding("UTF-8");
Part part=request.getPart("file");
String value=part.getHeader("content-disposition");
System.out.println(value);
//获取文件名
String fileName=value.substring(value.lastIndexOf("=") + 2 , value.length()-1);
System.out.println(fileName);
String checkFile="";
String filename="";//有文件就上传,没文件跳过
        if (!"".equals(fileName) && fileName!=null)
        {
//文件后缀名检验
         checkFile=fileName.substring(fileName.lastIndexOf("."));
         System.out.println(checkFile);
         if (".txt".equals(checkFile))
         {
             filename=fileName.substring(0,fileName.length()-4);
             System.out.println(filename);
             part.write(SAVE_PATH + "/" + fileName);
         }
         else System.out.println("文件不符合上传要求,上传不成功");
        }//显示
String name=request.getParameter("name");
String test=request.getParameter("test");

request.setAttribute("msg1",name);
request.setAttribute("msg2",test);
request.setAttribute("msg3",filename);

request.getRequestDispatcher("/result.jsp").forward(request, response);

}
result页面  <body>
    <table border="1" >
    <tr>
    <td>${msg1}</td>
    </tr>
        <tr>
    <td>${msg2}</td>
    </tr>
        <tr>
    <td>${msg3}</td>
    </tr>
    </table>
  </body>
Servlet乱码

解决方案 »

  1.   

    你在Servlet里面的request.setCharacterEncoding("UTF-8");后面加上
    response.setContentType("text/html;charset=utf-8");
    祝你好运!
      

  2.   


    还是不行啊,现在只能用new String(request.getParameter("describe").getBytes("ISO-8859-1"),"UTF-8");这种方法。但是昨天我那些程序(带有上传功能那些)都好好的,但因为我要解决某一个地方里的乱码问题,用了new String(request.getParameter("describe").getBytes("ISO-8859-1"),"UTF-8");这个方法后,那些带有上传功能的表单就全变乱码了,即使改回来还是乱码。
      

  3.   

    myeclipse的设置,我认为我全都设置好了(设置成utf-8,在这以前一直用都没出过问题,就是昨天就开始出问题了),过滤器也有了,连tomcat里的server.xml里也加上了URIEncoding="UTF-8",但问题依旧。
      

  4.   

    首先你看下web.xml中是否有配置关于编码转换的过滤器作怪,然后
    看下result。jsp页面的编码是否是UTF-8,包括文件右键-》属性中的编码也是UTF-8吗???另外URIEncoding="UTF-8"只对get请求有效果
      

  5.   

    对了啊 ,楼主用的什么插件 做的上传功能,,你直接这样子获取的参数???
            String name=request.getParameter("name");
            String test=request.getParameter("test");
    能得到????????
    我晕了。。
    表单中使用了enctype="multipart/form-data",那么都是以二进制的格式传递到后台的
    http://hi.baidu.com/dnrranskydhkwze/item/264de2722f6a53285c1789a0
    这里用了smartupload插件。。
      

  6.   

    第一:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    第二:request.setCharacterEncoding("UTF-8");
         response.setContentType("text/html;charset=utf-8");
    是在不行楼主打开火狐或者谷歌浏览器用firebug看看传到后台的参数是否乱码,是的话urldecode一下
      

  7.   

    debug进入后台看获取的是不是乱码?
      

  8.   


    我用servlet3.0实现的,我一开始就直接用String name=request.getParameter("name");来获取表单值,但是一直都没乱码,那些值突然全变乱码的。我试试你给我的那网址的方法
      

  9.   

    这个插件里不是说取值用getRequest()来取数组或单个数据的么?你有没有用它说明的方法来取呢?也是乱码?