web开发中文数据写入到数据库乱码问题

来源:互联网 发布:mac打底唇膏 编辑:程序博客网 时间:2024/05/16 03:27

       第一次开发一个小的项目,经验尚浅,每次测试数据库时,都是随便的输入几个英文字符就行了的,看看数据库中是否显示了,便当做完成任务了。可是由于项目的要求,注册时可以使用中文,当测试时,到数据库中查看居然乱码。曾经看传智的老贺讲web时,项目的结尾就是来探讨和学习这个乱码的问题。他提到过滤器的处理方法,可是自己学的不多,只会在在页面中加入字符编码的控制。现在谈谈我的这种麻烦的解决办法,希望对那些和我一样刚入门的菜鸟有些帮助!

1.在你的jsp页面,也就是你打算提交啊数据到servlet的页面头部添加代码<% request.setCharacterEncoding("ISO8859_1");%>,并且将原来的jsp的页面的编码修改gb2123

2.在你所提交的servlet页面设置编码 request.setCharacterEncoding("ISO8859_1");

3.在servlet里面,对需要写入中文到数据库的的代码段下面都加上一行,例如

String xxx= request.getParameter("xxx");
xxx=new String(xxx.getBytes("ISO8859_1"),"gb2312");

4.这样就可以了


附一个servlet代码》》》》》》》

package com.action.student;import java.io.IOException;import java.io.PrintWriter;import java.sql.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dao.StuDao;import com.dao.UserDao;import com.test.md5;public class addStu extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("ISO8859_1");//测试: response.sendRedirect("index.jsp");/*解决中文插入数据库乱码问题 * 将提交的jsp(register.jsp)的<% request.setCharacterEncoding("ISO8859_1");%> * 在servlet中同添加request.setCharacterEncoding("ISO8859_1"); * 在得到的中文String后,进行xxx=new String(xxx.getBytes("ISO8859_1"),"gb2312");处理 */String name = request.getParameter("name");name=new String(name.getBytes("ISO8859_1"),"gb2312");String num1 = request.getParameter("num1");String num2 = request.getParameter("num2");//为了区别关键字class-->klassString klass = request.getParameter("class");String post = request.getParameter("post");post=new String(post.getBytes("ISO8859_1"),"gb2312");String partynum = request.getParameter("partynum");partynum=new String(partynum.getBytes("ISO8859_1"),"gb2312"); //测试:System.out.println(partynum);String both =  request.getParameter("both");String school = request.getParameter("school");String graduate = request.getParameter("graduate");String dorm = request.getParameter("dorm");if (num1.equals(num2)) {StuDao stu = new StuDao();if (stu.findStu(name, num1) != null) {// response.sendRedirect("index.jsp");System.err.println("用户已存在!");request.getRequestDispatcher("adderror.jsp").forward(request,response);} else {md5 md =new md5();num1 = md5.string2MD5(num1);//測試是否加密成功System.out.println(num1);int i = stu.addStu(name, num1,klass,post,partynum,both,school,graduate,dorm);if (i < 0) {request.getRequestDispatcher("adderror.jsp").forward(request, response);} else {response.sendRedirect("index.jsp");}}} else {System.out.println("密码不一致");request.getRequestDispatcher("adderror.jsp").forward(request,response);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

原创粉丝点击