首先声明我的数据库字符集为UTF-8   我的字符集我都注意到了 都是统一UTF-8
-- set character_set_results='utf8' ;
-- show variables like 'char%'; 
我的工具是eclipse3.2+myeclipse5.1+MYSQL v5.0.18 For Windows
我在网上查了很多资料  能想到的基本想到了
还是没解决
不要说重装数据库 更换数据库的字符集 因为这些我都做过了 都没有用
希望高手帮帮我 在此谢过
---------------------------------------------------------------------
package test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class MySqlTest { private Connection connection; private Statement statement; private ResultSet rs; public ResultSet getcon() {
        //String url = "jdbc:mysql://localhost/beersell"; String url = "jdbc:mysql://localhost/beersell?useUnicode=true&characterEncoding=utf-8";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(url, "root", "1983816");
statement = connection.createStatement();
String sql = "SELECT * FROM pro_types";
rs = statement.executeQuery(sql);
return rs;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
-----------------------------------------------------------------------------
package test;import java.io.UnsupportedEncodingException;
import java.sql.*;public class MySql { /**
 * @param args
 */
public static void main(String[] args) {
MySqlTest t = new MySqlTest();
ResultSet rs = t.getcon();
try {
while (rs.next()) {
String name = rs.getString(3);
try {
System.out.println(name + "*****************");
System.out.println(new String(name.getBytes("utf-8")));
System.out.println(new String(name.getBytes("utf-8"),"gbk"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}运行结果
???¨*****************
脝脮脥篓
脝脮脥篓
????*****************
脰脨碌脠
脰脨碌脠
????*****************
赂脽录露
赂脽录露

解决方案 »

  1.   

    (据我的经验)utf-8 无论你怎么搞,在某种情况下都会有乱码解决的办法只能是gb2312
      

  2.   

    我 UTF-8,GBK ,GB2312
    都试过了
    都没用
    我还修改了my.ini文件
    也不管用~~~~~~~~
      

  3.   

    1.首先你要确定字符集都utf8
    mysql> show variables like '%char%';
    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value     |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | utf8     |
    | character_set_connection | utf8     |
    | character_set_database   | utf8     |
    | character_set_filesystem | binary     |
    | character_set_results    | utf8     |
    | character_set_server     | utf8     |
    | character_set_system     | utf8     |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+---------------------------------------------------------+
    8 rows in set (0.00 sec)2.你调试输出的时候,不作转换会不会也出现乱码?
    即:System.out.println(name);
      

  4.   

    执行SQL语句前执行:
    String   sql   =   "set names gbk;"; 
    rs   =   statement.executeQuery(sql);