import java.sql.*;public class TestMysql { public static void main(String[] args) throws Exception {
Connection conn = null;
Statement stmt = null;
ResultSet result = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/?characterEncoding =utf8";  conn = DriverManager.getConnection(url, "root", "root");
stmt = conn.createStatement();
String creatDB = "CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET=utf8";
stmt.execute(creatDB);
String droptable = "DROP TABLE IF EXISTS mydb.t_books";
String creatTable = "CREATE TABLE mydb.t_books(id int unsigned NOT NULL,"
+ "name varchar(50) NOT NULL,isbn varchar(20) NOT NULL,price int unsigned,"
+ "PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET utf8";
String inserData1 = "INSERT INTO mydb.t_books(id,name,isbn,price) values (1,'刚回家回家','677687',65)";
String inserData2 = "INSERT INTO mydb.t_books(id,name,isbn,price) values (2,'好','7687',45)";
stmt.execute(droptable);
stmt.execute(creatTable);
stmt.execute(inserData1);
stmt.execute(inserData2);
String select = "SELECT * FROM mydb.t_books";
result = stmt.executeQuery(select);
while (result.next()) {
System.out.print(result.getString("id") + " ");
System.out.print(result.getString("name")+ " ");
System.out.print(result.getString("isbn") + " ");
System.out.println(result.getString("price") + " ");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(result != null) {
result.close();
result = null;
}
if(result != null) {
stmt.close();
stmt = null;
}
if(result != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} }}

解决方案 »

  1.   

    你数据库用的是什么编码格式?
    String url = "jdbc:mysql://localhost/?characterEncoding=utf8";
    改成
    String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8";
    试试
      

  2.   

    查下数据库编码,再看下项目编码。Mysql数据库编码问题很恼人的,你先看下数据库那边。如果数据库也 是乱码就把数据库的编码改改。
      

  3.   

    同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
    另外,这是“UTF-8”的官方书写。
      

  4.   

    把url改为String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8";
    并且在创建数据库的时候可以先执行一下set names utf8;
      

  5.   

    我觉得以后谁遇到这样的问题,最好是将文件直接保存为UTF-8,我觉得这是最传统的方法了。也是蛮实用的。
      

  6.   


    改什么地方的 为什么我改的就不能运行mysql了
    怎么改呢
      

  7.   

    在my.ini文件中查看这两句default-character-set=latin1和character-set-server=latin1然后把latin1改成UTF-8。要是文件里没有,就把这两句加上去。然后重启下mysql服务器。
    另外,你编码里的utf8全部按官方形式“UTF-8”写,要是还有什么问题,加我Q799229025,这个问题,我前两天刚好遇到过,有经验
      

  8.   

    改了 mysql直接不能启动了  这又是怎么回事也 
      

  9.   

    改MySQL编码,在重启动mySql服务
      

  10.   

    mysql。一涉及到中文乱码问题我都哭了。深受其害啊。我现在可小心了,从建库到建表,到字段,全部手工指定编码集。
      

  11.   

    需要重启服务器,步骤在百度搜一下。
    我电脑上是,计算机-管理-服务-mysql
      

  12.   

    一看就知道你mysql 数据库 傻瓜安装模式、mysql默认是latin1的、拉丁文、 你得自己修改你想要的编码集、修改my.ini文件、找到编码设置、修改成自己想要的编码、同14楼 操作、重启服务、最好改完之后在看看table 的编码集、一劳永逸的方法就是卸载mysql 重装、安装的时候修改默认编码集、
      

  13.   

    .java文件的编码是什么?输出的乱码本应该是什么?数据库编码是什么?我以前经历过这样的,.java 文件是utf-8,检索本地文件的文件名字是shift_jis编码,有部分文字在控制台乱码,但是我把信息输出log的时候,log显示正常。
      

  14.   

    重新运行mysql配置程序,然后修改编码为utf-8
      

  15.   

    “UTF-8这是官方形式。”这句话我说错了。如果编码全改成“UTF-8”,确实启动不了了(我试过了,狂汗!)现在说一下解决方法:
    在输入show variables like '%char%';这个命令之后,看这个character_set_system的编码,在你的mysql中显示是utf8,所以编码要改“utf8”而不是"UTF-8"。然后按14楼的操作。对此,我深表抱歉。
    怪只怪网上乱七八糟的东西,东看看,西看看,结果也不知道对不对就给记住了,回头下来试试才知道不对。