在创建的servlet中的doget方法中写入
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");//设置编码为utf-8
PrintWriter pw= response.getWriter();//创建PrintWriter对象
String name = request.getParameter("name");//从html页面中获取属性name为"name"的值,具体内容为:<input name="name" type="text">
String sex = request.getParameter("sex");//同上 具体内容为:<input name="sex" type="radio" value="男" >
String suggest = request.getParameter("suggest");//同上 具体内容为:<textarea name="suggest" cols="38" row="10">
String [] interest = request.getParameterValues("interest");///复选框,获取的可能是数组
//开始打印到页面
pw.println("姓名"+name);
pw.println("性别"+sex);
pw.print("兴趣");
for(String xq:interest){
pw.print(xq+"  ");
}
pw.println("个人简介:"+suggest);
}
注释在后面。
得到的结果是 姓名都是 性别女 兴趣阅读 看电影 个人简介:大神
将request.getParameter("name")改成new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");
意思就是在将request.getprarmeter("name")先转换成byte,设置他的编码为utf-8,默认编码是iso-8859-1,再将其设置成String。String [] interest = request.getParameterValues("interest");】是一个数组,所以在for循环的时候使用.getBytes("iso-8859-1")。具体为
for(String xq:interest){
xq=new String(xq.getBytes("iso-8859-1"),"utf-8");
pw.print(xq+"  ");
}
然后照常输出,就不会乱码了。
补充:
刚发现一个更简便的方法。好像是可以在jsp里面最上面的一行代码
<%@ page language="java" import="java.util.*" pageEncoding="iso-8859-1"%>
的pageEncoding的值修改为GBK
入果觉得我最开始说的方法麻烦可以用此方法