论坛首页 综合技术论坛

Mysql中文乱码问题解决方案

浏览 15131 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-03   最后修改:2011-04-03

最近用mysql做一个远程教学的软件,可是发现一旦向mysql中存入中文就会显示“?”,在eclipse中读取数据显示的也是“?”,搞的要死,在网上查了相关的解决方案,可是效果都不是很好,都无法解决我的问题,最后自我摸索出一个解决方法。

Mysql中文乱码出现的可能性应该有:

数据库在安装时没有选择默认为中文的格式,比如utf8gbk,而是latin1等,解决这一问题,可以在安装目录下的my.ini文件中修改参数:图片示例如下,将左边的改为右边的样子:

 

以上是我看到的许多的网友的解决方法,我试了许多次,可是结果还是不行,后来我分析这可能和解决中文乱码问题没有什么关系,因为这里的编码设置都是默认的的格式,如果我们的表格的格式是其他的格式,应该就是显示其他的格式了,一样会出现中文乱码的问题。我觉得解决mysql数据库乱码问题的解决方法是设置表的数据格式为中文兼容格式,比如gbkutf8等,

方法一:操作图如下:

 上图改为下图:

 

方法二:将该数据库导出,生成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;
	}
}

 

 打印结果:

微笑露
微笑露
微笑露
微笑露
微笑露

 

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics