java学习笔记1-Eclipse和Mysql连接,中文不显示问题 (一)

2014-11-24 10:53:14 · 作者: · 浏览: 0

最近学习java过程中,遇到了一些数据库连接,中文显示成“?”的问题,自己查了下网上的帖子,鼓弄出来了,这里总结一下,给大家分享。

首先,确定Mysql是否能正确显示中文:
这里检测方式,用界面华工具或者windows的“运行”命令都行,此处楼主用“运行”方式检测

运行-mysql -u 这个后面填用户名 -p这个后面填密码,回车;


[cpp]
create database zjw;
use zjw;
create table admin
(
name varchar(30),
password varchar(30)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

create database zjw;
use zjw;
create table admin
(
name varchar(30),
password varchar(30)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 插入数据:insert into admin values('庄','1234');

显示:select *from admin;

如果显示的结果,汉字处是?,则证明数据库存储汉字有问题。

解决办法:输入show variables like '%character%';

\

Set character_set_client=utf-8;


Set character_set_results=utf-8;

博主因为已经修改,所以截图已经显示utf-8了。

此时尝试insert刚才的插入语言,能正确显示了吧。

但是,这个时候,有可能遇到另一种情况,就是能在Mysql里面正确存储中文,但是在Eclipse里面进行连接Mysql时候,插入操作插入的中文还是?。比如:

[cpp]
public class Test {
public static void main(String[] args) {
Database db=new Database();

String sql="insert into admin1(id,name,password) values(4,'庄','12345')";
boolean f=db.update(sql);
if(f){
System.out.println("succ");
}
else{
System.out.println("fail");
}
String sql2="select * from admin1";
ResultSet rs=db.query(sql2);
try {
while(rs.next()){
System.out.println(rs.getInt("id")+"--->"+rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

public class Test {
public static void main(String[] args) {
Database db=new Database();

String sql="insert into admin1(id,name,password) values(4,'庄','12345')";
boolean f=db.update(sql);
if(f){
System.out.println("succ");
}
else{
System.out.println("fail");
}
String sql2="select * from admin1";
ResultSet rs=db.query(sql2);
try {
while(rs.next()){
System.out.println(rs.getInt("id")+"--->"+rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

} Eclipse输出的是:

succ
4--->?

此时出现这种情况,很可能是你在与Mysql连接时,为指定编码格式。

请在连接的时候,加入编码格式:" useUnicode=true&characterEncoding=utf-8";(下面红字部分)

[cpp]
//负责完成数据库的连接及操作
public class Database {
//建立连接
private final String DRIVER_STR="com.mysql.jdbc.Driver";
//加载驱动
private final String CONN_STR="jdbc:mysql://127.0.0.1:3306/zjw useUnicode=true&characterEncoding=utf-8";
private final String USER="root";
private final String PASSWORD="123456";
private Connection conn=null;
public Database(){
try {
Class.forName(DRIVER_STR);
conn=DriverManager.getConnection(CONN_STR, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTr