当前位置:数据库 > SQLServer >>

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

最近学习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<SPAN style="COLOR: #ff6666">?useUnicode=true&characterEncoding=utf-8</SPAN>"; 
    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) { 
          &n

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,