作为一个新手,花了我好多好多精力,网上查了无数的解决方法。从中午11点40到夜晚7点30晚饭都没吃,挨个实验,挨个解决,其中mysql写了装,装了卸载。终于还是被我找到了完美的解决方案。如果,你遇到这样的问题还没解决,我给你的建议是做如下两步,直接完美解决恼人的问题。
第一步,重装mysql,在配置时,选择gbk作为默认编码。
第二步,在java中,连接mysql时,其中声明数据库的url时,必须用语句:
"jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=gbk";
其他的可以改,但是后面的?useUnicode=true&characterEncoding=gbk绝对不能改。
关于mysql中的各种字符编码的设置方法,读者可以查找设置方法,我主要介绍的是如果要想解决java向mysql中插入汉字,都是问号的问题,字符的编码必须如下设置。
在mysql中,各种字符编码必须这样设置
设置完成后,我做了一个实验,java中的代码如下
package chap17;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class AddUser {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
// 加载数据库驱动
String url =
"jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=gbk";
String user =
"root"; // 数据库用户名
String
password = "q123456"; // 数据库密码
Connection
conn = DriverManager.getConnection(url, user, password); //
建立数据库连接,获得连接对象conn
String sql =
"insert into co values('付勇','华南')"; // 生成一条sql语句
Statement
stmt = conn.createStatement(); // 创建一个Statment对象
stmt.executeUpdate(sql);
// 执行sql语句
conn.close();
// 关闭数据库连接对象
} catch (ClassNotFoundException
e) {
// TODO
Auto-generated catch block
e.printStackTrace();
} catch (SQLException e)
{
// TODO
Auto-generated catch block
e.printStackTrace();
}
}
}
在mysql中的反应如下