我的java工程是gb2312的
数据库是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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec) 但是我直接执行
rs = stmt.executeQuery(str);就能成功把中文插入到数据库。之前不能 今早把mysql重装以后 设置默认编码为utf8才突然成功的之前的语句为 public ResultSet executeQUERY(String str){
try {
// String setCharset = "SET NAMES 'gb2312'";
// stmt.executeUpdate(setCharset);
//String setCharset = "SET NAMES 'utf8'";
//stmt.executeUpdate(setCharset);
//String sql;
//sql = new String(str.getBytes(),"ISO-8859-1");//iso-8859-1
rs = stmt.executeQuery(str);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("查询数据库出现异常!1");
e.printStackTrace();
}
数据库是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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec) 但是我直接执行
rs = stmt.executeQuery(str);就能成功把中文插入到数据库。之前不能 今早把mysql重装以后 设置默认编码为utf8才突然成功的之前的语句为 public ResultSet executeQUERY(String str){
try {
// String setCharset = "SET NAMES 'gb2312'";
// stmt.executeUpdate(setCharset);
//String setCharset = "SET NAMES 'utf8'";
//stmt.executeUpdate(setCharset);
//String sql;
//sql = new String(str.getBytes(),"ISO-8859-1");//iso-8859-1
rs = stmt.executeQuery(str);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("查询数据库出现异常!1");
e.printStackTrace();
}
stmt.executeUpdate(setCharset);
sql = new String(str.getBytes("gb2312"),"utf8");
rs = stmt.executeQuery(str);
把它改了 可结果出现乱码。
我要是不抓吗直接执行就不会出现。整的我有点不明白了。