指教:关于jdbc向mysql传递String时,中文变成问号的问题
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数据库里面的中文全部变成了问号,可是我直接在数据库写中文的话又可以,这是什么情况,请高手帮忙解决一下!
------解决方案--------------------插英文没有问题吧?如果没有问题那可能是数据库编码的问题,mysql编码设为utf-8试试。
在bin文件夹下,点击MySQLInstanceConfig.exe进行设置,在"Please select the default character set"设置页,选择"Best Support For Multilingualism"试试。
------解决方案--------------------这个是典型的编码问题 因为JAVA核心的编码方式和你计算机的编码方式不一样
你的name content 是不是从表单里获取的用户的输入 如果是的话 这样写
比如一个<input type = "text" name = "name">想获取的的话 这样写
String name = new String(request.getParameter("name").getBytes(ISO-8859),"UTF-8");
------解决方案--------------------连接串里指定编码方式utf-8
------解决方案--------------------就是字符编码问题 mysql里面有几个地方能设置编码 程序里也要设置 都统一了才能不乱码.