public class ToJdbc {
public void setJdbc(String name,String content,long time){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
PreparedStatement pre = con.prepareStatement("insert into recode(name,content,time) values(?,?,?)");
pre.setString(1, name);
pre.setString(2, content);
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
pre.setString(3, sdf.format(date));
pre.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}这样的代码,调用过后到了mysql数据库里面的中文全部变成了问号,可是我直接在数据库写中文的话又可以,这是什么情况,请高手帮忙解决一下!

解决方案 »

  1.   

    插英文没有问题吧?如果没有问题那可能是数据库编码的问题,mysql编码设为utf-8试试。在bin文件夹下,点击MySQLInstanceConfig.exe进行设置,在"Please select the default character set"设置页,选择"Best Support For Multilingualism"试试。
      

  2.   


    utf-8已经设置了啊 bin文件夹下的MySQLInstanceConfig.exe没有看到..
      

  3.   

    这个是典型的编码问题 因为JAVA核心的编码方式和你计算机的编码方式不一样
    你的name content 是不是从表单里获取的用户的输入 如果是的话 这样写
    比如一个<input type = "text" name = "name">想获取的的话 这样写
    String name = new String(request.getParameter("name").getBytes(ISO-8859),"UTF-8");
      

  4.   

    就是字符编码问题 mysql里面有几个地方能设置编码 程序里也要设置 都统一了才能不乱码.
      

  5.   

    谢谢大家的回答
    这个问题我解决了,我问了我老师,
    中文处理 数据库要用UTF-8建库见表,
    另外,JDBC请求URL地址后要添加一个编码设置:?useUnicode=true&characterEncoding=utf-8
    像这样:Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8","root", "");