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乱码
<%@ 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乱码
response.setContentType("text/html;charset=utf-8");
祝你好运!
还是不行啊,现在只能用new String(request.getParameter("describe").getBytes("ISO-8859-1"),"UTF-8");这种方法。但是昨天我那些程序(带有上传功能那些)都好好的,但因为我要解决某一个地方里的乱码问题,用了new String(request.getParameter("describe").getBytes("ISO-8859-1"),"UTF-8");这个方法后,那些带有上传功能的表单就全变乱码了,即使改回来还是乱码。
看下result。jsp页面的编码是否是UTF-8,包括文件右键-》属性中的编码也是UTF-8吗???另外URIEncoding="UTF-8"只对get请求有效果
String name=request.getParameter("name");
String test=request.getParameter("test");
能得到????????
我晕了。。
表单中使用了enctype="multipart/form-data",那么都是以二进制的格式传递到后台的
http://hi.baidu.com/dnrranskydhkwze/item/264de2722f6a53285c1789a0
这里用了smartupload插件。。
第二:request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
是在不行楼主打开火狐或者谷歌浏览器用firebug看看传到后台的参数是否乱码,是的话urldecode一下
我用servlet3.0实现的,我一开始就直接用String name=request.getParameter("name");来获取表单值,但是一直都没乱码,那些值突然全变乱码的。我试试你给我的那网址的方法