以下是我的代码,求高手解答,为什么是乱码了、、、
DBOperator DB = new DBOperator();
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
int result = 0;
String sql = "insert into rw(cphm,sjxm,rwid,wtr,mdd,yn) values(?,?,?,?,?,?)";
String sql1 = "select * from dingdan where id ="+Integer.parseInt(request.getParameter("rwid"));
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>增派任务</TITLE></HEAD>");
out.println("  <BODY>");

try {
conn = DB.createConnection();
rs = DB.executeQuery(sql1);
if(rs.next()){
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, request.getParameter("cphm").trim());
pstmt.setString(2, request.getParameter("sjxm").trim());
pstmt.setString(3, request.getParameter("rwid").trim());
pstmt.setString(4, request.getParameter("wtr").trim());
pstmt.setString(5, request.getParameter("mdd").trim());
pstmt.setString(6, "0");
result = pstmt.executeUpdate();
pstmt.close();
conn.close();
if(result==0){
out.println("对不起,增派失败!");
out.println("<a href='/wlxt/zprw.html'>重新输入</a>");
}else{
out.println("恭喜!输入成功!"+"<br>"+"<br>");
out.println("车牌号码:<br>"+request.getParameter("cphm")+"<br>"+"<br>");
out.println("司机姓名:<br>"+request.getParameter("sjxm").trim()+"<br>"+"<br>");
out.println("任务ID:<br>"+request.getParameter("rwid").trim()+"<br>"+"<br>");
out.println("委托人:<br>"+request.getParameter("wtr").trim()+"<br>"+"<br>");
out.println("目的地:<br>"+request.getParameter("mdd").trim()+"<br>"+"<br>");
out.println("<a href='/wlxt/ywgl.html'>返回主菜单</a>");
}
}else{
out.println("对不起,不存在此订单!");
out.println("<a href='/wlxt/zprw.html'>重新输入</a>");
}
} catch (SQLException e) {
System.out.println("连接数据库出错!");
e.printStackTrace();
}
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();

解决方案 »

  1.   

    在HEAD中添加一行:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      

  2.   

    我的页面是用HTML做的,里面有这个代码,还需要在servlet中添加吗?
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>无标题文档</title>
    <style type="text/css">
    <!--
    .STYLE2 {
    font-size: 24px;
    font-weight: bold;
    }
    -->
    </style>
    </head>
      

  3.   

    业务都写在JSP中!! 代码没问题,你先看卡是不是数据库用的什么编码,数据库的数据有无乱码?很可能是数据库的编码和程序使用的编码不一致导致的。
      

  4.   


    你上面的HTML都是out.println输出的啊。输出HEAD的时候加一句。
      

  5.   

    我改动代码之前得到的并不是乱码,改动之后就成了乱码,大虾帮我看看:
    改之前:conn = DB.createConnection();
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, request.getParameter("cphm").trim());
    pstmt.setString(2, request.getParameter("sjxm").trim());
    pstmt.setString(3, request.getParameter("rwid").trim());
    pstmt.setString(4, request.getParameter("wtr").trim());
    pstmt.setString(5, request.getParameter("mdd").trim());
    pstmt.setString(6, "0");
    result = pstmt.executeUpdate();
    pstmt.close();
    conn.close();
    if(result==0){
    out.println("对不起,增派失败!");
    out.println("<a href='/wlxt/zprw.html'>重新输入</a>");
    }else{
    out.println("恭喜!输入成功!"+"<br>"+"<br>");
    out.println("车牌号码:<br>"+request.getParameter("cphm").trim()+"<br>"+"<br>");
    out.println("司机姓名:<br>"+request.getParameter("sjxm").trim()+"<br>"+"<br>");
    out.println("任务ID:<br>"+request.getParameter("rwid").trim()+"<br>"+"<br>");
    out.println("委托人:<br>"+request.getParameter("wtr").trim()+"<br>"+"<br>");
    out.println("目的地:<br>"+request.getParameter("mdd").trim()+"<br>"+"<br>");
    out.println("<a href='/wlxt/ywgl.html'>返回主菜单</a>");
    }
    改之后:
    conn = DB.createConnection();
    rs = DB.executeQuery(sql1);
    if(rs.next()){
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, request.getParameter("cphm").trim());
    pstmt.setString(2, request.getParameter("sjxm").trim());
    pstmt.setString(3, request.getParameter("rwid").trim());
    pstmt.setString(4, request.getParameter("wtr").trim());
    pstmt.setString(5, request.getParameter("mdd").trim());
    pstmt.setString(6, "0");
    result = pstmt.executeUpdate();
    pstmt.close();
    conn.close();
    if(result==0){
    out.println("对不起,增派失败!");
    out.println("<a href='/wlxt/zprw.html'>重新输入</a>");
    }else{
    out.println("恭喜!输入成功!"+"<br>"+"<br>");
    out.println("车牌号码:<br>"+request.getParameter("cphm")+"<br>"+"<br>");
    out.println("司机姓名:<br>"+request.getParameter("sjxm").trim()+"<br>"+"<br>");
    out.println("任务ID:<br>"+request.getParameter("rwid").trim()+"<br>"+"<br>");
    out.println("委托人:<br>"+request.getParameter("wtr").trim()+"<br>"+"<br>");
    out.println("目的地:<br>"+request.getParameter("mdd").trim()+"<br>"+"<br>");
    out.println("<a href='/wlxt/ywgl.html'>返回主菜单</a>");
    }
    }else{
    out.println("对不起,不存在此订单!");
    out.println("<a href='/wlxt/zprw.html'>重新输入</a>");
    }
      

  6.   

    就是想先验证一下是否存在订单号(rwid),这个订单号是表dingdan中的主键id,如果存在这个rwid,则能添加任务,否则不能。我就是想改成这个样的,所以又加了一条查询sql语句,是不是用的不恰当
      

  7.   

    设置编码字符啊。setCharater.方可。
    以后多多交流,可以关注我的微博:http://t.qq.com/zhuzhu5023
      

  8.   

    我已经设置了啊,不是这个吗 request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");