新手勿喷啊,今天做网页评论功能的时候,只要将中文评论插入数据库的时候会出现???的乱码。
public class commitcomment extends HttpServlet {
@Override
protected void doPost(HttpServletRequest reqest, HttpServletResponse respsonse) throws ServletException, IOException {
Connection conn=null;
PreparedStatement ps=null;
int count =0;
HttpSession session=reqest.getSession();
String musicname=reqest.getParameter("musicname");
Customer customer = (Customer) session.getAttribute("customer");
String name=customer.getId_name();
System.out.println(name);
String comment =reqest.getParameter("comment");
System.out.println(comment);
System.out.println(musicname);
/* System.out.println(name);*/
try {
conn= DBUtil.getConnection();
DBUtil.beginTransaction(conn);
DBUtil.commitTransaction(conn);
comment=name+":"+comment;
System.out.println(comment);
String sql="insert into musiccomments (music_name, music_comment) VALUES ('"+musicname+"','"+comment+"')";
ps=conn.prepareStatement(sql);
count=ps.executeUpdate();
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn,ps,null);
}
if(count==1)
{
System.out.println("成功");
respsonse.sendRedirect(reqest.getContextPath()+"/"+"musicdetail?musicname="+musicname);
}
}
}
原因就是数据库的编码不支持中文,因为我没用图形化界面,所以找到了一个临时的方法,可以用cmd命令修个表的编码。
**alter table <表名> CONVERT TO CHARACTER SET utf8;**
我是用jdbc链接的,这里还是有个比较恶心的地方,就是mysql如果你的字符集没有设置,或者没有设置好的话,默认是latin1
那么你的utf-8直接传过来还是会出问题。
因此mysql的url要这样写:
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
最后终于解决了