mysql字符集问题

来源:互联网 发布:php开发教程 编辑:程序博客网 时间:2024/04/29 21:28

今天学习jdbc连接mysql,数据库名为:mydata,表名为user_table,表中记录如下图:

代码:

import java.sql.*;

public class ConnectMySql {


 public static void main(String[] args) {
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/mydata", "root", "root");
    System.out.println("Connect is OK!");
    stmt = conn.createStatement();
    rs = stmt.executeQuery("select * from user_table");
    while(rs.next()) {
      System.out.print("manno: " + rs.getInt("manno"));
      System.out.print("/tman: " + rs.getString("man"));
      System.out.println("");
    }
  } catch(ClassNotFoundException e) {
   e.printStackTrace();
  } catch(SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    if (rs!= null){
     rs.close();
    }
    if (stmt != null) {
     stmt.close();
    }
    if (conn != null) {
     conn.close();
    }
   }catch (SQLException e1) {
    e1.printStackTrace();
   }
  }
  }
}


执行后,输出

manno:1001   man:????

 

查阅资料后发现,是mysql字符集的问题,修改了my.ini中以下部分参数:

[client]
default-character-set=gbk

[mysql]
default-character-set=gbk

[mysqld]
default-character-set = gbk
default-collation=gbk_bin 

在开始菜单中,运行services.msc,重新启动mysql服务,在mysql中执行show variables like "%char%";发现部分字符集还是latin1,然后执行show variables like "%colla%";显示如下:

  +----------------------+-------------------+  
   Variable_name                  Value                          

  
  +----------------------+-------------------+  
   collation_connection    latin1_swedish_ci   

 
   collation_database       gbk_bin              
   collation_server         gbk_bin              

发现collation_connection值不对,再执行set collation_connection=gbk_bin;

 

设置完成后drop database mydata,然后再重新create database和create table,insert几条记录进去后,再执行show variables like "%char%";显示主均为gbk,进入eclipse执行java程序,问题解决! 

同时学习到一个新的命令/sevecse查看系统设置

原创粉丝点击