您的位置:首页 > 数据库

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

2013-07-18 15:17 471 查看
       第一次开发一个小的项目,经验尚浅,每次测试数据库时,都是随便的输入几个英文字符就行了的,看看数据库中是否显示了,便当做完成任务了。可是由于项目的要求,注册时可以使用中文,当测试时,到数据库中查看居然乱码。曾经看传智的老贺讲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-->klass
String 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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息