【求助】java:向mysql数据库插入数据时中文乱码,但是java文件和数据库都是用UTF-8字

附上代码和结果:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class InsertData {

static Connection con;
public static Connection getConnection() { //建立返回值为Connection的方法
try {
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
System.out.println("数据库驱动加载成功");
con = DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/db_test1",
"root", ""); // 获取数据库连接
if (con != null) {
System.out.println("数据库连接成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return con; //按方法要求返回个Connection对象
}

/**
* @param args
*/
public static void main(String[] args) {
con = getConnection(); // 调用数据库连接方法
Statement statement;
try {
statement = con.createStatement(); // 获取Statement对象
for(int i=0;i<3;i++){
statement.execute("insert into tb_student(name,sex,age,salary)values('小红','女',24,5000)"); // 执行添加数据操作
}

System.out.println("student表的所有记录:");
ResultSet res=statement.executeQuery("select * from tb_student"); //查询所有记录
while(res.next()){
int id=res.getInt("id");
String name=res.getString("name");
String sex=res.getString("sex");
int age=res.getInt("age");
int salary=res.getInt("salary");
System.out.println("id:"+id+"\t姓名:"+name+"\t性别:"+sex+"\t\t年龄:"+age+"\t\t工资:"+salary);
}
//关闭连接
res.close();
statement.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}

}

}

先确认你的数据库字符集设置没有问题,是确认不是认为应该是.

url写成这样没有? 

jdbc:mysql://localhost:3306/数据库名称?characterEncoding=UTF-8


我的是gbk,


还要检查

数据库属性是不是




表选项


温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-25
在tomcat里面 配置下你的字符编码!! 因为数据库没有错,java文件也没错,那肯定是server.xml里面的connector这个节点上的字符没有去配
第2个回答  2013-07-25
你用数据库的软件,比如navacat看看,是不是你建表的时候,不是用utf-8的编码
第3个回答  2013-07-25
你这贴出来的只是控制台输出的是乱码,确定插入时,数据库中的就已经是乱码了吗
第4个回答  2013-07-25
你用show variables like 'char%'这个命令看看你数据库里字符集的设置都是什么
相似回答