首先声明我的数据库字符集为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();
}
}
}运行结果
???¨*****************
脝脮脥篓
脝脮脥篓
????*****************
脰脨碌脠
脰脨碌脠
????*****************
赂脽录露
赂脽录露
-- 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();
}
}
}运行结果
???¨*****************
脝脮脥篓
脝脮脥篓
????*****************
脰脨碌脠
脰脨碌脠
????*****************
赂脽录露
赂脽录露
都试过了
都没用
我还修改了my.ini文件
也不管用~~~~~~~~
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);
String sql = "set names gbk;";
rs = statement.executeQuery(sql);