部分代码
register.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
.........
<%request.setCharacterEncoding("utf-8");%>
<form action="/实验8/servlet/UploadServlet" method="post" enctype="multipart/form-data">
<label>性别: </label>
<input name="sex" type="radio" value="男" checked/> 男
<input name="sex" type="radio" value="女"/> 女
<label>照片: </label>
<input name="picture" value="" type="file"/>
<input value="注册" type="submit"/>
</form>
......
结果:
数据库出现乱码:
解决方法:
将以下两句设置为 gb2312
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312"%>
request.setCharacterEncoding("gb2312");
重新部署编译运行
原因:
别的地方看到把jspSmartUpload 源代码包:
file.setFieldName(s4);//196行
改成: file.setFileName(newString(s4.getBytes("ISO8859-1")));
file.setFilePathName(s5);//198
改成: file.setFilePathName(new String(s4.getBytes("ISO8859-1")));
能解决乱码问题,所以出现乱码是jspsmart.jar里使用gbk编码。
规律:
utf-8编码可以用gbk和iso8859-1解码后编回去
gbk编码后只能用iso8859-1解码后编回去
在JSP页面获取表单的值时会出现乱码,有两种解决方法:
1.在调用getParameter之前通过request.setCharacterEncoding设置字符编码
2.调用new String(str.getBytes("iso8859-1"), "UTF-8");编码后解码