为什么设置了编码输出中文还是乱码,是文本框还有设置吗input怎么写的

<%@page import="edu.jmi.db.*" %>
<%@page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Insert title here



<%
String str =null;
//1设置解码
request.setCharacterEncoding("utf-8");
//2获取参数
str=request.getParameter("name");
String str1=request.getParameter("password");
String str2=request.getParameter("password2");
String str3=request.getParameter("mail");
System.out.println(str+str1+str2+str3);
if(str==null){//如果初次加载页面,直接返回,不会执行下面存取数据库的代码
//return;
}else{

//3存取数据库
//3.1获取数据库链接
Connection conn=DB.getConnection();
//3.2准备插入sql语句
String name=DB.validUser(str);
if(name==null){
String sql="insert into user(name,password,email) values(?,?,?)";
PreparedStatement pst=conn.prepareStatement(sql);//执行sql语句
// pst.setInt(1,1); //id
pst.setString(1,str);//name
pst.setString(2,str1);//pass
pst.setString(3,str3);//email

if(str1.equals(str2)){
    //3.3执行插入
    int res=pst.executeUpdate();
    System.out.println("插入结果是:"+res);
    pst.close();
    conn.close();
    session.setAttribute("usr", str);
    response.sendRedirect("regok.jsp"); 
}else{
    session.setAttribute("errmsg", "密码和确认密码不一致");
} 
}else{
    session.setAttribute("errmsg2", "用户名已存在,请重新输入");
}
}
String err = (String)session.getAttribute("errmsg");
if(err==null){
      err="";
  } 
String err2 = (String)session.getAttribute("errmsg2");
if(err2==null){
      err2="";
  } 

%>
<%=err %>
<%=err2 %>

用户名:

密码:

确认密码:

邮箱:



右键该JSP文件,preference里面有个编码的选项,你改下那个试试看