Mysql 中文乱码出现的可能性应该有:
数据库在安装时没有选择默认为中文的格式,比如 utf8 , gbk ,而是 latin1 等,解决这一问题,可以在安装目录下的my.ini 文件中修改参数:图片示例如下,将左边的改为右边的样子:
以上是我看到的许多的网友的解决方法,我试了许多次,可是结果还是不行,后来我分析这可能和解决中文乱码问题没有什么关系,因为这里的编码设置都是默认的的格式,如果我们的表格的格式是其他的格式,应该就是显示其他的格式了,一样会出现中文乱码的问题。我觉得解决 mysql 数据库乱码问题的解决方法是设置表的数据格式为中文兼容格式,比如 gbk , utf8 等,
方法一:操作图如下:
上图改为下图:
方法二:将该数据库导出,生成 sql 文件,打开文件,将所有之前的格式(比如 latin1 )全部替换为 gbk 。再从新将sql 文件导入,这时就解决了 mysql 数据库乱码的问题了。
java代码:
- package csu.tm_learning_client.comm;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public class DBUtil {
- private Connection conn;
- /**
- * @param args
- */
- public static void main(String[] args) {
- DBUtil db = new DBUtil();
- db.conn = db.getConnection();
- db.addUser();
- db.selectUser();
- }
- public Connection getConnection() {
- if (conn != null) {
- return conn;
- } else {
- try {
- // 加载驱动程序
- Class.forName("com.mysql.jdbc.Driver");
- // 连续数据库
- conn = DriverManager.getConnection(
- "jdbc:mysql://127.0.0.1:3306/tm_learning", "root",
- "netjava");
- } catch (Exception ef) {
- ef.printStackTrace();
- }
- }
- return conn;
- }
- public int addUser() {
- try {
- if (!conn.isClosed()) {
- // statement用来执行SQL语句
- Statement statement = conn.createStatement();
- // 要执行的SQL语句
- String sql = "insert into userinfo(name,password) values('小路','aaa')";
- // 结果集
- int rs = statement.executeUpdate(sql);
- return rs;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- public int selectUser() {
- try {
- if (!conn.isClosed()) {
- // statement用来执行SQL语句
- Statement statement = conn.createStatement();
- // 要执行的SQL语句
- String sql = "select *from userinfo";
- // 结果集
- ResultSet rs = statement.executeQuery(sql);
- while (rs.next()) {
- String name = rs.getString("name");
- System.out.println(name);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- }
打印结果: