form表单信息:
<form method="post" action="hi" enctype="multipart/form-data" >
name:<input name="xingming"/><br/>
password:<input name = "pwd"/><br/>
file:<input name = "wenjian" type="file"/><br/>
<input type="submit" value="提交啦">
</form>
servlet获取代码:
req.setCharacterEncoding("gb2312");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
ServletInputStream sis = req.getInputStream();
byte[] buf = new byte[1024];
int flag = 0;
while((flag = sis.readLine(buf, 0, 1024)) != -1){
String line = new String (buf,0,flag);
resp.getWriter().write(line+"<br/>");
}
sis.close();
得到信息:
不知道怎么将input里的中文怎么读出来??????
我的意思是:上传的那个文件是可以读出来的(不乱码),但是我要得到form里简单input里的值就出现了乱码,如图:
这个你如果是用post 方式提交数据的话,默认是使用utf-8来编码数据的,所以那个开头req.setCharacterEncoding("gb2312");我觉得应该改为req.setCharacterEncoding("utf-8");
1.有一种可能是应为你上传的文件格式不是UTF-8的,将文件另存格式改为UTF-8试试。
2.如果不行的话,你将UTF-8改为utf-8,form表达也改成:
<form method="post" action="..." accept-charset="utf-8"> ... </form>
试试
1.文件编码要是utf-8。
2.文件有文件头,把文件头清一下。